我的while循环不起作用

时间:2016-11-05 16:49:21

标签: python

这只是我的代码的一部分,我不知道为什么我的while循环不让用户再试一次。请帮帮我!

answer3 = True
while answer3:
    if answer2.lower() == "no" or answer2.lower() == "nah":
        print ("Okay then ... Bye.")
        sys.exit()
    elif answer2 == "Yes".lower() or answer2.lower() == "yeah" or answer2.lower() == "yes":
        print ("Okay then ... \n")
    else:
        print("Please enter a valid answer! Try again!\n")
    break

3 个答案:

答案 0 :(得分:1)

只需删除中断,您的问题是它在第一次迭代后停止。

发生的事情是break指令用于放弃循环。在您的代码中,您将第一个变量设置为True,并期望在不满足条件时继续循环。

代码只评估条件,最后一句话(休息)指示何时退出,这就是你想要避免的。

使用此代码检查正确的行为:

import sys

answer3 = True
while answer3:
    answer2 = raw_input("introduce your option: ")

    if answer2.lower() == "no" or answer2.lower() == "nah":
        print ("Okay then ... Bye.")
        sys.exit()
    elif answer2 == "Yes".lower() or answer2.lower() == "yeah" or answer2.lower() == "yes":
        print ("Okay then ... \n")
    else:
        print("Please enter a valid answer! Try again!\n")

答案 1 :(得分:1)

break函数退出while循环,所以即使answer3的值仍为True,它也会在第一个循环结束后停止循环。删除休息,它应该工作。

  

它终止当前循环并在下一次继续执行   声明,就像C中传统的break语句一样。

     

休息时最常见的用途是某些外部条件   触发要求仓促退出循环。 break语句可以   用于while和for循环。

     

如果使用嵌套循环,则break语句将停止执行   最里面的循环并开始执行下一行代码   块。

enter image description here

答案 2 :(得分:0)

除了删除休息时,其他答案建议您需要再次获取answer2的值。

除此之外,我认为你可能也希望在回答是肯定的情况下摆脱循环

answer3 = True
while answer3:
    answer2 = str(input("Enter your answer no/yes:"))
    if answer2.lower() == "no" or answer2.lower() == "nah":
        print ("Okay then ... Bye.")
        sys.exit()
    elif answer2 == "Yes".lower() or answer2.lower() == "yeah" or answer2.lower() == "yes":
        print ("Okay then ... \n")
        sys.exit()
    else:
        print("Please enter a valid answer! Try again!\n")