python - 在不使用 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')
解决方案
将您的输入包装在一个评估用户输入的函数中,如果它无效,则根据需要递归调用它。例子:
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...')
推荐阅读
- c - 如何将两个灵活的数组放在一个结构中?
- python - 如何在整个 DataFrame 上执行 pd.Series.str.count() 的等效操作?
- sql - 如果校园名称包含“'Indiana”字样,我如何从 Campus 表中选择所有记录?
- android - 如何保存 SeekBar 的值并将其传递给其他活动?
- c# - 将 OracleRefCursor 转换为自定义 C# 对象列表
- machine-learning - 如何加快对 6,100,000 个特征的递归特征消除?
- windows - md5sum 抱怨回车符
- javascript - 为什么 npm run serve 在 Vue.js 上构建缓慢?
- microsoft-graph-api - 通过 MS GraphAPI 获取新电子邮件发送的状态
- python-3.x - CNN输出准确率低于50%