为什么a!= b!= c不等于a!= b以及a!= c和b!= c?

时间:2019-10-15 13:30:25

标签: python

我想检查3个值a,b,c是否彼此相等。 假设a == b == c等于a == b和b == c以及a == c,为什么python为什么对!= b!= c给出不同的答案?

谢谢!

这是从Python入门课程开始的任务:

“三个整数a,b,c中有多少相等?”

这是一个简单的任务,我得到以下正确答案:

a = int(input()); b = int(input()); c = int(input());

if a != b and a != c and b != c:
    print(0)
elif a == b == c:
    print(3)
else:
    print(2)

但是,我不明白为什么a != b != c在最初的if语句中不起作用。

a != b != c起,我期望与从a != b and a != c and b != c起起一样

2 个答案:

答案 0 :(得分:1)

“等于”运算符是可传递的:

  

如果a == b和b == c,则a == c

“不等于”运算符不是:

  

如果a!= b和b!= c,则a仍可能等于c

为什么?拿

  

a = 3,b = 4,c = 3

然后

  

a!= b,b!= c,但是a == c

答案 1 :(得分:0)

在使用a != b != c时,实际上是在documentation中使用链式比较:

  

形式上,如果a,b,c,...,y,z是表达式,而op1,op2,...,opN是表达式   比较运算符,则op1 b op2 c ... y opN z等于   op1 b和b op2 c和... y opN z,除了每个表达式是   最多评估一次。

因此a != b != c实际上是a != b and b != c,与a != b and a != c and b != c不同,例如:

a, b, c = 1, 2, 1
print(a != b != c)
print(a != b and a != c and b != c)

输出

True
False