Chcę stworzyć menu wielokrotnego wyboru (...)
Bardzo dobrze, że to napisałeś - bo to jest prawdziwy problem, a nie zarządzanie tymi zagdnieżdżonymi pętlami. Te pętle to tylko Twoja implementacja jakiegoś rozwiązania.
Do takiego problemu podszedłbym chyba inaczej.
Opisałbym menu jako pewną strukturę danych, zawierającą informacje o możliwych do wyboru opcjach, oraz o innych menu, do których można przejść.
Dla przykładu:
all_menus = [
('menu1', 'opt1', 'opt2', '#menu2'),
('menu2', 'opt3', 'opt4', '#menu1')
]
Akurat użyłem krotek, ale można zastosować również listy, czy słowniki (ba, nawet pełnoprawne obiekty).
Następnie wystarczyłoby stworzyć listę takich obiektów i wtedy wystarczy jedna pętla zewnętrzna do kontroli menu, oraz jedna wewnętrzna do odczytu opcji:
opt = '#menu1'
while opt.startswith('#'):
available_opts = [x for x in all_menus if x[0] == opt[1:]][0][1:]
# tu wypisanie opcji dla usera, można to zrobić ładniej
print(available_opts)
opt = None
while opt not in available_opts:
opt = input('Opcja: ')
Rzecz jasna, jako identyfikatorów menu użyłem napisów, można również zastosować coś innego - kwestia gustu/pomysłu.