在 python 3 逻辑运算符中给出相反的结果

In python 3 logical operator giving me an opposite result

我在 Python 3 工作,我创建了一个带有逻辑运算符“&”的 If-else 语句。得到的结果与实际应该出现的结果相反。作为: 一=20 b=30

if a==b & a==20:
    print("a is equal to b")
else:
    print ("a is not equal to b")

这个条件应该打印出 else 条件,因为第一个语句 "a==b" 是假语句而第二个语句 "a==20" 是真。数学逻辑说,当“&”条件中的语句为假时,结果将为假。 当我将条件"a==b"替换为"b==a"时,奇怪的事情发生了,结果是正确的。

在 Python 中 '&' 的优先级高于 '==' 所以我们得到了错误的结果 试试这个:

if (a==b) & (a==20):
    print "a is equal to b"
else:
    print "a is not equal to b"

回答你的第一个问题。 Python & 运算符将比 == 运算符先执行(由于优先级更高)

回答你的第二个问题。

if a==b & a==20:

当您在内部执行此表达式时,会发生这种情况。

if a==(b&a)==20:

表达式 (b&a) 会给你答案 20。 所以现在的表情是这样的

if a==(20)==20:  # which is nothing but if a==20 and 20==20:

因为 a = 20,表达式变为真,你得到执行的 if 部分。 但是当你把 a 和 be 互换时,这就是实际发生的事情。

if b==(a&a)==20:

a&a 再次给你 20。 所以表达式变成

if b==(20)==20:    # if b==20 and 20==20:

现在 b 不是 20,而是 30。所以表达式变为 False,否则部分被执行。