Запрашиваемая для конкретного ввода без использования перерыва - PullRequest
0 голосов
/ 06 июня 2019

Я создаю игру в покер на кости и пытаюсь спросить, хочет ли пользователь играть перед тем, как продолжить игру, а затем спрашивает, хочет ли игрок играть снова после каждой игры.

IЯ не уверен, как разрешить неправильные вводы, отличные от Y и N, чтобы сказать пользователю, чтобы ввести правильный ответ, а затем зациклить ввод, пока ни один из них не введен.Я не могу использовать перерыв.

play = True
s = input("Would you like to play dice poker [y|n]? ")
if s == "y":
    play = True
elif s == "n":
    play = False
else:
    print("Please enter y or n")

while play:

Здесь и далее код моей игры

Этот раздел ниже повторяется в конце каждой игры

  again=str(input('Play again [y|n]? '))

    if again == "n":
        play = False
    if again == "y":
        play = True
    else:
        print('Please enter y or n')

1 Ответ

2 голосов
/ 06 июня 2019

оберните ваш ввод в функцию, которая оценивает ввод пользователя, если он недопустим, при необходимости вызывайте его рекурсивно.Пример:

def keep_playing():
    valid = 'ny'
    again=str(input('Play again [y|n]? '))
    a = again.lower().strip()  # allow for upper-case input or even whole words like 'Yes' or 'no'
    a = a[0] if a else ''
    if a and a in valid:
        # take advantage of the truthiness of the index: 
        # 0 is Falsy, 1 is Truthy
        return valid.index(a)
    # Otherwise, inform the player of their mistake
    print(f'{again} is not a valid response. Please enter either [y|n].')
    # Prompt again, recursively
    return keep_playing()

while keep_playing():
      print('\tstill playing...')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...