您需要将函数内部的中断更改为返回,并且需要有一个else语句,以防用户没有为您提供正确的输入。最后,需要将while loop中的调用转换为if语句。
如果玩家输入所需的命令,这将允许您中断while语句,否则它将再次询问。我还更新了yn函数,允许用户同时使用小写和大写字符,以及yes和nodef yn(input, yes, no):
input = input.lower()
if input == 'y' or input == 'yes':
print (yes)
return 1
elif input == 'n' or input == 'no':
print (no)
return 2
else:
return 0
name = raw_input('What is your name, adventurer? ')
print 'Nice to meet you, %s. Are you ready for your adventure?' % name
while True:
ready = raw_input('y/n ')
if yn(ready, 'Good, let\'s start our adventure!',
'That is a real shame.. Maybe next time') > 0:
break
这背后的想法很简单。函数有三种状态。用户回答是、否或无效。如果用户响应为是或否,则函数将返回1表示是,2表示否。如果用户未提供有效输入(例如空格),则函数将返回0。
在while True:循环中,我们用一个if statement来包装yn(“…..”,“…”)函数,检查yn函数是否返回大于0的数字。因为yn如果用户向我们提供有效输入,则返回0,而1或2表示有效输入。
一旦我们有来自yn的有效响应,我们就调用break,它停止while loop,我们就完成了。