首页 > 解决方案 > 在不使用 break 的情况下请求特定输入

问题描述

我正在创建一个骰子扑克游戏,并试图在继续游戏之前询问用户是否想玩,然后询问玩家是否想在每场游戏后再次玩。

我不确定如何允许除 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')

标签: pythonloopsinput

解决方案


将您的输入包装在一个评估用户输入的函数中,如果它无效,则根据需要递归调用它。例子:

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...')

在此处输入图像描述


推荐阅读