• 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)

0 głosów
496 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 4,209 wizyt
pytanie zadane 27 lutego 2019 w C i C++ przez de1vee Nowicjusz (220 p.)
+1 głos
2 odpowiedzi 640 wizyt
pytanie zadane 24 listopada 2019 w Python przez kingkushlee Gaduła (3,960 p.)

93,759 zapytań

142,716 odpowiedzi

323,364 komentarzy

63,357 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...