在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: ")
这似乎有效。不知道为什么
答案 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()
为自己节省一些打字工作,并仅对y
和n
进行测试,然后使用成员资格测试:
while choice.lower() not in {'n', 'y'}: