这只是我的代码的一部分,我不知道为什么我的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
答案 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语句将停止执行 最里面的循环并开始执行下一行代码 块。
答案 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")