Прерывать программу через некоторое время true — попытка и исключение

#python

#python

Вопрос:

Мне нужно, чтобы моя программа прерывалась, если пользователь вводит «нет». На данный момент программа не прерывается, и когда вводится ‘no’, попытка и исключение перезапускаются

 while final_answer_check == True:

try:
    final_answer = str(input("Do you want a copy of the answers?"))
    if final_answer.lower() == "no":
        final_answer_check = False
  

Я ожидал бы, что программа завершится, но она просто спрашивает: «Вам нужна копия ответов?» снова

Комментарии:

1. входные данные уже находятся в str

2. где ваш блок except?

3. О, и где цикл?

4. DirtyBit — Я удалил части except и loop, чтобы они вписывались в панель вопросов. спасибо за помощь

5. вы всегда должны публиковать фрагмент кода, который мог бы воспроизвести проблему, с которой вы столкнулись, посмотреть, поможет ли опубликованный мной ответ?

Ответ №1:

Продолжая комментарии, это должно сделать:

 final_answer_check = True   # a boolean flag 

while final_answer_check:    # while the flag is set to true
    try:
        final_answer = str(input("Do you want a copy of the answers?"))
        if final_answer.lower() == "no":
            final_answer_check = False
    except:
        pass
  

Редактировать:

Однако лучшим подходом могло бы быть использование бесконечного цикла с break :

 while True:
    try:
        final_answer = input("Do you want a copy of the answers?")
        if final_answer.lower() == "no":
            break
    except:
        pass
  

ВЫВОД:

 Do you want a copy of the answers?no

Process finished with exit code 0
  

Ответ №2:

Сначала вам нужно определить переменную final_answer_check и установить значение в True . Если вы создаете свой код в блоке try...except , вам нужно сделать его завершенным, а не только try .

 final_answer_check = True
while final_answer_check == True:
    try:
        final_answer = str(input("Do you want a copy of the answers?"))
        if final_answer.lower() == "no":
            final_answer_check = False
        else:
            final_answer_check = True
    except:
        print ("your another code should be here")