我在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”是真的。数学逻辑说在“&”中的陈述时条件是错误的结果将是错误的。 奇怪的是,当我用“b == a”替换条件“a == b”时,结果是正确的。
答案 0 :(得分:4)
回答你的第一个问题。 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,表达式变为true,并且执行了if部分。 但是,当你互换了a并且这就是实际发生的事情。
if b==(a&a)==20:
a& a再次给你20。
所以表达式变为
if b==(20)==20: # if b==20 and 20==20:
现在b不是20,而是30.所以表达式变为False,否则部分会被执行。
答案 1 :(得分:2)
在Python'&'优先级高于' =='所以我们得到了错误的结果 试试这个:
if (a==b) & (a==20):
print "a is equal to b"
else:
print "a is not equal to b"