Python: Как заставить программу повторно запрашивать ввод, пока пользователь не ответит "да" или "нет"?
Обучаюсь кодингу на Python, решил написать простенькую игру в кости с программой.
# Демонстрирует генерацию случайных чисел
import random # создаем случайные числа из диапазона
x = input("Хотите сыграть? ")
if x == "да":
while x == "да":
dice_1 = random.randint(1, 6)
dice_2 = random.randrange(6) + 1
my_total = dice_1 + dice_2
dice_3 = random.randint(1, 6)
dice_4 = random.randrange(6) + 1
enemy_total = dice_3 + dice_4
print("При Вашем броске выпало", dice_1, "и", dice_2, "очков, в сумме:", my_total)
print("При броске Вашего соперника выпало", dice_3, "и", dice_4, "очков, в сумме:", enemy_total)
if my_total > enemy_total:
print("Поздравляем! Вы выиграли! Попробуйте ещё раз!")
elif my_total < enemy_total:
print("К сожалению, Вы проиграли... Возьмите реванш!")
else:
print("Ничья! Попробуйте ещё раз, чтобы выяснить, на чьей стороне Госпожа Удача!")
x = input("Хотите сыграть ещё? ")
if x == "нет":
print("Хорошо, тогда до встречи!")
break
elif x == "нет":
print("Хорошо, тогда до встречи!")
Хочу добавить фичу, чтобы при вводе любого другого ответа, кроме "да" или "нет", программа просила ответить "да" или "нет" до получения корректного ответа для дальнейшей работы кода.
Ответы (2 шт):
Автор решения: Evgenii Evstafev
→ Ссылка
Добавьте в начало, например, такой код:
x = ""
while x.lower() != "да" and x.lower() != "нет":
print("Введите 'да' или 'нет'")
x = input("Хотите сыграть? ")
Автор решения: Stanislav Volodarskiy
→ Ссылка
Я бы сделал такую спрашивалку:
def yes_or_no(prompt):
while True:
answer = input(prompt)
if answer == "да":
return True
if answer == "нет":
return False
print("Не понял. Ответьте \"да\" или \"нет\".")
Тогда программу можно записать так:
if yes_or_no("Хотите сыграть? "):
while True:
dice_1 = random.randint(1, 6)
dice_2 = random.randrange(6) + 1
my_total = dice_1 + dice_2
dice_3 = random.randint(1, 6)
dice_4 = random.randrange(6) + 1
enemy_total = dice_3 + dice_4
print("При Вашем броске выпало", dice_1, "и", dice_2, "очков, в сумме:", my_total)
print("При броске Вашего соперника выпало", dice_3, "и", dice_4, "очков, в сумме:", enemy_total)
if my_total > enemy_total:
print("Поздравляем! Вы выиграли! Попробуйте ещё раз!")
elif my_total < enemy_total:
print("К сожалению, Вы проиграли... Возьмите реванш!")
else:
print("Ничья! Попробуйте ещё раз, чтобы выяснить, на чьей стороне Госпожа Удача!")
if not yes_or_no("Хотите сыграть ещё? "):
break
print("Хорошо, тогда до встречи!")