Python - Выбор ответа пользователя, да, нет, ответ некорректный
Всем доброго дня! Столкнулся с неочевидной (для меня) проблемой работы цикла. Программа после своей первой итерации спрашивает пользователя, играем еще раз или нет. Возможные ответы "д" и "н", если же пользователь ввел другой символ, запрос еще раз. При первом выборе все ок, и "д" и "н" отрабатывают. Но если выбрать сначала "д", пройти еще одну работу программы, и после выбрать "н", то программа просит ввести "н" еще несколько раз... Загадка
from random import *
answers = ["Да", "Нет"]
def new_game():
flag = True
while True:
request = input('Хотите сыграть еще раз? "д" - да, "н" - нет: ')
if request == "н":
print('Пока-пока!')
break
elif request == "д":
magicball()
else:
print('Не понял вашего ответа')
def magicball():
while True:
question = input(f"Задай же свой вопрос: ")
answer = choice(answers)
print(f"Мой ответ тебе: {answer}!")
new_game()
break
magicball()
Ответы (3 шт):
Проблема в том, что вы вызываете ещё одну функцию magicball(), при этом ту, которую запускаете изначально - не завершаете, поэтому после выбора варианта "нет" условие выхода не срабатывает и она продолжает работать по while True:
Если отталкиваться конкретно от вашего кода, то самый простой вариант исправления:
elif request == "д":
magicball()
break
ошибка была из за цикла while True, он тут не нужен
from random import *
answers = ["Да", "Нет"]
def new_game():
flag = True
request = input('Хотите сыграть еще раз? "д" - да, "н" - нет: ')
if request == "н":
print('Пока-пока!')
elif request == "д":
magicball()
else:
print('Не понял вашего ответа, попробуйте ввести еще раз')
new_game()
def magicball():
question = input(f"Задай же свой вопрос: ")
answer = choice(answers)
print(f"Мой ответ тебе: {answer}!")
new_game()
magicball()
Это конечно круто,но я чутка упростил код,пробуйте
import random
import time
def answer():
text = ['Да', 'Нет']
answer = input('Задавайте ваш вопрос:')
random_text = random.choice(text)
print('Я думаю что...')
time.sleep(2)
print(random_text)
while True:
b = input('Хотите задать вопрос?(Да/Нет)')
if b == 'Да':
answer()
elif b == 'Нет':
print('Пока!')
break
else:
print('Не особо понял о чем Вы,напишите Да/Нет(с большими буквами)')