-8

我对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 是否正确?如果不是,那是什么原因?

4

4 回答 4

6

您可以进行比较,但您的第二次比较与第一次的比较不同。

True仅当每个变量为 0 时才会进行此比较:

if result1 == 0 and result2 == 0 and result3 == 0:

此比较将True在至少一个变量为 0 时进行:

if 0 in (result1, result2, result3):

如您所见,这并不完全相同。要执行相同的比较,您可以执行以下操作:

if (0, 0, 0) == (result1, result2, result3):
于 2012-06-25T06:38:16.093 回答
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 个变量是否都相等。

于 2012-06-25T06:38:07.893 回答
4

在您的第二个示例中,如果任何值为“0”并且不等于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" 
于 2012-06-25T06:45:04.167 回答
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一次测试任意多个。

于 2012-06-25T06:42:51.620 回答