逻辑门:py!中的x!='减'或'加'

don*_*lan 0 python

我在if ... then语句中发生了一个奇怪的语法情况.不太确定修复是什么......

x1 = 'minus'
if x1 == 'minus':
    print('OK')
if x1 != 'minus':
    print('this should not print')

y = {'direction':'minus'}
x2 = y['direction']
if x2 != 'plus' or x2 != 'minus':
    print("huh...")
if x1 != 'plus' or x1 != 'minus':
    print("??")
if x1 == 'plus' or x1 == 'minus':
    print("wait...")
print(x2)
if (x2 != 'plus') or (x2 != 'minus'):
    print("it wasn't the parenthesis...")

print(x2 != 'plus')
print(x2 != 'minus')

print(x2)
Run Code Online (Sandbox Code Playgroud)

输出是:

>OK
>huh...
>??
>wait...
>it wasn't the parethesis...
>True
>False
>minus
Run Code Online (Sandbox Code Playgroud)

如何在python中创建一个只在python中触发的逻辑门x != 'minus' or 'plus'

kin*_*all 5

如何在python中创建一个逻辑门,只有在python中x!='minus'或'plus'时才触发?

x始终不等于其中的一个(想想看:如果是plus,该测试是不正确的,但plus不是minus,所以其他测试如此),因此,使用or你有永远是真实的!

你可能想要的是这样的:

if not (x == 'minus' or x == 'plus')
Run Code Online (Sandbox Code Playgroud)

应用De Morgan定律,您还可以使用:

if x != 'minus' and x != 'plus'
Run Code Online (Sandbox Code Playgroud)

你也可以使用更多的Pythonic:

if x not in ('minus', 'plus')
Run Code Online (Sandbox Code Playgroud)