我正试图用编写一段代码,重复这个问题,直到给出正确的答案,并对可能的答案做出一些不同的回答。到目前为止,这就是我所拥有的,但在它对给定的输入做出响应后,程序继续前进。我不知道如何使用while循环来完成这一操作,因为它以一个特定的答案结束,而不是以其他答案结束。
answer = input("What is your favorite eldest daughter's name? ").lower()
if answer == "a" or answer == "al":
print("Of course, we all knew that")
elif answer == "c" or answer == "chris":
print("""Oh she must be standing right there.
But that's not it, try again.""")
elif answer == "e" or answer == "ed":
print("Not even the right gender. Try again.")
elif answer == "n" or answer == "nic":
print("Only biological children please.")
else:
print("I'm sorry. Only children. Were you thinking of the dogs?")
break
就是您想要的。像这样使用:
while 1:
answer = input("What is your favorite eldest daughter's name? ").lower()
if answer == "a" or answer == "al": #assuming this is the right answer
print("Of course, we all knew that")
break
elif answer == "c" or answer == "chris":
print("""Oh she must be standing right there.
But that's not it, try again.""")
elif answer == "e" or answer == "ed":
print("Not even the right gender. Try again.")
elif answer == "n" or answer == "nic":
print("Only biological children please.")
else:
print("I'm sorry. Only children. Were you thinking of the dogs?")
您基本上需要不断重复这个问题,直到程序认为答案可以接受为止。
代码
#!/usr/bin/python3 -B
answers = ['alice', 'chris', 'bob']
answer = None
while answer not in answers:
answer = input('Enter your answer: ')
print('Your answer was: {}'.format(answer))
基本上,这里的代码有一个可接受的answers
的列表,它将用户的answer
初始化为None
。然后,它进入while
循环,该循环不断重复自己,直到在可接受的answers
的列表中找到用户的answer
。
输出
➜ ~ ./script.py
Enter your answer: alice
Your answer was: alice
➜ ~ ./script.py
Enter your answer: no
Enter your answer: no
Enter your answer: yes
Enter your answer: bob
Your answer was: bob
改进代码
现在,您可以调整代码以使用您选择的消息。还要注意,如果您想为任何可接受的条目提供不同的响应,可以使用字典并稍微更新代码。
例如,你可以有这样的东西:
answers = {
'bob': 'This was the best choice',
'alice': 'Everyone picks the hot gal',
# ... and so on
}
然后,您可以像以前一样通过检查answers
字典(例如while answer not in answers.keys():
)的键来继续迭代。
当循环以可接受的answer
退出时,只需
print(answers[answer])
如果是answers == 'alice'
,则程序将打印Everyone picks the hot gal
。
它将大大简化您的代码,使您更容易理解和使用:)
使用while
循环和break
语句:
while True:
# . . .
if correct_answer:
break