继续要求输入,直到给出正确答案(Python)(非数值)

  • 本文关键字:答案 Python 继续 python
  • 更新时间 :
  • 英文 :


我正试图用编写一段代码,重复这个问题,直到给出正确的答案,并对可能的答案做出一些不同的回答。到目前为止,这就是我所拥有的,但在它对给定的输入做出响应后,程序继续前进。我不知道如何使用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

最新更新