我该如何写一个问题来再次玩游戏



我正在扩展《用Python自动化无聊的东西》中的随机数猜测游戏,当游戏询问你是否想再次玩时,我不知道如何编写代码。

更具体地说,如果用户键入";是";或";否";对于想要玩游戏,代码会做适当的事情。然而,如果用户键入其他内容,我希望它说";请回答是或否";然后允许用户输入另一个答案。

在这种情况下,我的代码当前打印";请回答是或否";,但随后它将答案视为"是";是";,所以它重新开始游戏。我不希望它立即开始一个新游戏,除非用户特别键入";是的";。我该怎么做?

这是代码

import random
print ('Hello, what is your name?')
name = input ()
name = name.strip()
while True:
print ('Well, ' + name + ', I am thinking of a number between 1 and 20.')
secretNumber = random.randint (1, 20)
print ('DEBUG: Secret number is ' + str(secretNumber))
print ('Take a guess.') 

for guessesTaken in range (1, 7):
try: 
guess  = int (input ())

if (guess < secretNumber and guessesTaken < 6):
print ('Your guess is too low. Guess again.')
elif (guess > secretNumber and guessesTaken < 6):
print ('Your guess is too high. Guess again.')
else:
break # This condition is for the correct guess
except ValueError:
print ('You did not enter a number.') # This condition is for if a non-integer is entered.
if (guess == secretNumber and guessesTaken == 1):
print ('Good job, ' + name + '! You guessed my number in ' + str(guessesTaken) + ' guess.')

elif (guess == secretNumber and guessesTaken > 1): 
print ('Good job, ' + name + '! You guessed my number in ' + str(guessesTaken) + ' guesses.')

else:
print ('Sorry. Your guesses were all wrong. The number I was thinking of was ' + str(secretNumber))
print ('Would you like to play again?') 
answer = input ()
answer = answer.lower()

if answer == 'no': 
print ('Ok.')
break 
elif answer == 'yes':
print ('Ok, let's go!') 
else: 
print ('Please answer yes or no')

只需有第二个循环,它将继续提示,直到给出有效的输入。

usr_response = input('Would you like to play again: ').lower()
while usr_response not in ('yes','no'):
usr_response = input('Invalid response. Please choose yes or no: ')
if usr_response == 'no':
break

所以问题是代码只检查一次有效输入。如果第二个输入也无效,则不检查任何条件。对于解决方案,您应该替换:

if answer == 'no': 
print ('Ok.')
break 
elif answer == 'yes':
print ('Ok, let's go!') 
else: 
print ('Please answer yes or no')

带有:

list1 = ['yes', 'no']
while answer not in list1:
print ('Please answer yes or no:')
answer = input()
if answer == 'no': 
print ('Ok.')
break 
elif answer == 'yes':
print ('Ok, let's go!')

最新更新