• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przechodzenie pomiędzy pętlami while (Python)

VPS Starter Arubacloud
0 głosów
293 wizyt
pytanie zadane 25 lutego 2022 w Python przez marshallrez Nowicjusz (150 p.)



while True:
      
    while True:
        
        print("pierwsze menu")
        print("1 lub 2")
        
        menu1 = int(input())
        
        if 0<menu1<4:
            break
        
    if menu1 == 1:
        
        print("ok")
        
        while True:
            print("Drugie menu")
            print("1 lub 2")
            
            menu2 = int(input())
            
            if 0<menu2<3:
                break
            
        if menu2 == 1:
            
            while True:
                
                print("Menu3")
                print("1 lub 2")
                
                menu3 = int(input())
                
                if 1<menu3<3:
                    break
                
            if menu3 == 1:
                print("ok menu3")
                
            if menu3 == 2:
                print("wyjscie")
        
    if menu1 == 3:
        
        while True:
            
            print("Menu2a")
            print("1 lub 2")
            
            menu2a = int(input())
            
            if 1<menu2a<3:
                break
            
        if menu2a == 1:
            print("ok")
            
        if menu2a ==2:
            print("żegnaj")
            
    if menu1 == 2:
        
        print("Jeszcze raz?")
        
        exitMenu = int(input())
        
        if 1<exitMenu<3:
            break



        
        

Witam, to mój pierwszy post tutaj.

 

Chcę stworzyć menu wielokrotnego wyboru, w tym celu chciałbym móc swobodnie przełączać się pomiędzy pętlami while. A dokładnie - jeśli jestem w "menu3" i w int(input()) wpiszę 2, chcę by program cofnął mnie do "menu2". Niestety, "if" w " if 1<menu3<3: break " cofa mnie na początek programu. Czy takie selektywne przełączanie między pętlami w Pythonie jest możliwe? Bardzo dziękuję za pomoc.

1 odpowiedź

0 głosów
odpowiedź 25 lutego 2022 przez edutomek Dyskutant (8,380 p.)

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.

Podobne pytania

0 głosów
4 odpowiedzi 3,076 wizyt
pytanie zadane 27 lutego 2019 w C i C++ przez de1vee Nowicjusz (220 p.)
+1 głos
2 odpowiedzi 390 wizyt
pytanie zadane 24 listopada 2019 w Python przez kingkushlee Gaduła (3,960 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...