Python无限循环由或复合条件引起,但在使用not()时不是

2024-04-18 00:38:11 发布

您现在位置:Python中文网/ 问答频道 /正文

    test = ''

# This loop infinitely

    while test != 'O' or test != 'X':
        test = raw_input("Enter: ").upper()

# This works fine   

    while not(test == 'O' or test == 'X'):
        test = raw_input("Enter: ").upper()

not和用!=有什么区别?你知道吗


Tags: ortestloopinputrawnotthisupper
2条回答

。。。如果你一路狂饮,你会写作

while not test in ('O', 'X'):

或者更简单

while not test in 'OX':

问题是你的连词:你没有正确地应用德莫根定律。分发否定时,需要从or切换到and。你知道吗

not(test == 'O' or test == 'X')

相当于

test!= 'O' and test!= 'X'

看看test!= 'O' or test!= 'X'的逻辑:不管你给test什么字符,它都不等于两个测试字符中的至少一个。F0r O,第二个子句是True;对于X,第一个是True;对于任何其他字符,两个子句都是True。为了克服这个问题,您需要一个同时是XO的字符。你知道吗

我们不是在用Python做量子变量。。。至少现在还没有。您必须编写一个带有自定义相等运算符的新类才能使其正常工作。你知道吗

相关问题 更多 >

    热门问题