即使答案无效,循环也会中断

时间:2015-09-23 16:13:03

标签: python python-3.x

任何人都可以帮我弄清楚这有什么问题吗?

        make -f Makefile.dep MPICC="mpicc" CFLAGS="-O2" skampi
        make[1]: Entering directory          
        Makefile.dep:5: *** missing separator.  Stop.
        make[1]: Leaving directory 
        make: *** [skampi] Error 2

它循环回到"你接受"一旦,即使你输入了无效的答案,它也会打破循环。

2 个答案:

答案 0 :(得分:2)

==检查是否相等,因此您要检查字符串accept1是否等于元组("yes", "Yes", "no", "No"),这将永远不会成立。因此,您获得了输出 - "That's not a valid answer!"

您应该使用in运算符来检查accept1是否等于元组的其中一个元素。

其他建议,您可以使用.lower()使整个字符串小写以进行检查,并使用set。示例 -

while accept1.lower() not in {"yes", "no"}:

你的循环是错误的(只要答案有效,你试图循​​环,当你应该尝试循环直到答案变得有效)时,它应该是这样的 -

accept1 = input("Do you accept?")
while accept1.lower() not in {"yes", "no"}:
    print ("That's not a valid answer!")
    accept1 = input("Do you accept?")
print ("I see.")

答案 1 :(得分:1)

我认为你想要做的是:

answers = set(['Yes', 'No', 'yes', 'no'])

if accept1 in answers :
    print ("I see.")
else:
    print ("That's not a valid answer!")
    accept1 = input("Do you accept?")

print ("Let's begin!")

您希望输入的值为“是”,“是”,“否”或“否”,对吗?