在python 3逻辑运算符给我一个相反的结果

时间:2018-04-11 05:24:11

标签: python python-3.x if-statement logical-operators

我在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")

enter image description here

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

enter image description here

2 个答案:

答案 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"