我对python中的比较运算符有疑问。我想知道这是对还是错。
我有一些分配给变量的输出。所以我们说:
result1, result2, result3
现在我进行比较,如
if result1 == 0 and result2 == 0 and result3 == 0:
print "Success "
else:
print "failure"
我怀疑这种比较可以用这种格式进行
if 0 in (result1 , result2 ,result3):
print "Success"
else :
print "failure"
使用Python是正确的吗?如果没有,那么原因是什么?
答案 0 :(得分:6)
您可以进行比较,但您的第二次比较与第一次比较不同。
当每个变量为0时,此比较仅为True
:
if result1 == 0 and result2 == 0 and result3 == 0:
当至少有一个变量为0时,此比较为True
:
if 0 in (result1, result2, result3):
正如您所看到的,这不是完全相同的比较。要执行相同的比较,您可以执行以下操作:
if (0, 0, 0) == (result1, result2, result3):
答案 1 :(得分:5)
if 0 in (result1, result2, result3):
相当于:
if result1==0 or result2==0 or result3==0:
你想要的是这个:
if (0,0,0) == (result1, result2, result3):
相当于:
if result1==0 and result2==0 and result3==0:
你甚至可以这样做:
if result1==result2==result3==0:
因为你正在检查所有3个变量是否相同。
答案 2 :(得分:4)
在你的第二个例子中,如果任何值为“0”,它将被评估为“True”,并且不等于and
。
如果您有多个结果并想确认它们是否都匹配给定值,我建议使用all()
函数:
results = [0, 1, 0]
if all(result == 0 for result in results):
print "Success"
else:
print "Failure"
或使用any()
if not any(results):
print "Success"
...
然而,这个反向逻辑通常很难让我首先理解,也许检查存在比不存在更加pythonic。因此,如果您更改逻辑以检查是否存在,您只需编写:
if all(results):
print "Success"
else:
print "Failure"
答案 3 :(得分:0)
也许做一个可变函数?
def allZero(*args):
for elem in args:
if elem != 0:
return False
return True
if allZero(result1, result2, result3):
return "Success"
else:
return "Failure"
然后,您可以根据需要一次测试尽可能多的resultN
。