Python while循环条件检查字符串

时间:2015-07-22 14:10:59

标签: python while-loop

在Codeacademy中,我运行了这个简单的python程序:

choice = raw_input('Enjoying the course? (y/n)')

while choice != 'y' or choice != 'Y' or choice != 'N' or choice != 'n':  # Fill in the condition (before the colon)
    choice = raw_input("Sorry, I didn't catch that. Enter again: ")

我在控制台输入y,但循环从未退出

所以我以不同的方式做到了

choice = raw_input('Enjoying the course? (y/n)')

while True:  # Fill in the condition (before the colon)
    if choice == 'y' or choice == 'Y' or choice == 'N' or choice == 'n':
        break
    choice = raw_input("Sorry, I didn't catch that. Enter again: ")

这似乎有效。不知道为什么

1 个答案:

答案 0 :(得分:4)

你的逻辑倒置了。请改用and

while choice != 'y' and choice != 'Y' and choice != 'N' and choice != 'n':

使用or,输入Y表示choice != 'y'为真,因此其他or选项不再重要。 or表示选项的一个必须为true,对于任何给定的choice值,始终至少有一个!=测试正在进行是真的。

您可以使用choice.lower()为自己节省一些打字工作,并仅对yn进行测试,然后使用成员资格测试:

while choice.lower() not in {'n', 'y'}: