我想检查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
起起一样
答案 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