在 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,否则部分被执行。
我在 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,否则部分被执行。