#python #while-loop
#python #цикл while
Вопрос:
- Если я выберу 1 в первый раз, а затем выберу 1 снова во второй раз,
- а затем выберите 2 во втором меню, чтобы вернуться обратно в первое меню
- и я выбираю выход, но он снова покажет второе меню.
- Я должен выбрать 2 три раза, после чего программа закроется.
Должно быть, что-то не так с моим циклом while, но я не могу его найти : (
def menu(): # first menu
print(' ---------------------------- ')
print('| first menu here |')
print(' ---------------------------- ')
print('|choose [1] |')
print(' ---------------------------- ')
print('|choose [2] to quit |')
print(' ---------------------------- ')
return input('&&t;&&t; ')
def s_menu(): # second menu
print(' ********************************** ')
print('| second menu here |')
print(' ********************************** ')
print('|choose [1] to continue |')
print(' ********************************** ')
print('|choose [2] to back first menu |')
print(' ********************************** ')
return input('&&t;&&t; ')
def doSomethin&():
print('Somethin& here')
second_while() # declare second s_menu() here
def second_while(): # loop second s_menu()
while True:
resp = s_menu()
if resp == '1':
doSomethin&()
elif resp == '2':
menu()
break
else:
print('Wron& input!')
#break # if break was here, wron& user input will close terminal immediately
# loop first menu()
while True:
inp = menu()
if inp == '1':
doSomethin&()
elif inp == '2':
print('Break')
break
else:
print('Wron& input!')
#break # if break was here, wron& user input will close terminal immediately
Ответ №1:
Изменить
def doSomethin&():
print('Somethin& here')
second_while() # declare second s_menu() here
Для
def doSomethin&():
print('Somethin& here')
В противном случае каждый раз, когда вы вызываете doSomethin&()
, вы переходите на 1 уровень second_while()
глубже, и вам нужно будет нажать 2 еще раз, чтобы выйти из всех них.
Комментарии:
1. Если я делаю это
def doSomethin&(): print('Somethin& here')
, второе меню отображаться не будет. Второе меню — это возможность для пользователя запуститьdoSomethin&
еще одно, если пользователь захочет, если нет, пользователь может выбрать 2, чтобы вернуться обратно в первое меню.2. О, точно. Просто добавьте вызов
second_while()
afterdoSomethin&()
в первое меню.
Ответ №2:
хорошо, я нашел решение для своего ответа. Цикл While внутри цикла while
# loop first menu()
while True:
menu()
inp = input('&&t;&&t; ')
if inp == '1':
doSomethin&()
# loop doSomethin&()
while True:
resp = input('&&t;&&t; ')
if resp == '1':
doSomethin&()
elif resp == '2':
break
else:
print('Wron& input')
elif inp == '2':
print('Break')
break
else:
print('Wron& input!')