Python的“如果”条件不适用于速记“或”

时间:2018-07-01 23:43:30

标签: python

a | b == 0 vs a == 0或b == 0的方法有什么问题吗?

def validate(a,b,c):
    print(a,b,c)
    if (a|b == 0) or c == 0:
        return "Invalid"
    else:
        return "Valid"
print("Test 1: ", validate(0,1,2))
print("Test 2: ", validate(0,1,0))

>0 1 2
Test 1:  Valid

>0 1 0
Test 2:  Invalid

1 个答案:

答案 0 :(得分:-1)

您似乎对python的or|感到困惑。

难以理解,因为许多语言中的or运算符是|(或更常见的是||)。

page lists python's operators

重试您的示例,但使用or而不是|

if (a or b == 0) or c == 0:

但是,如果我正确阅读了您的问题,则认为您正在尝试这样做;

if (a == b == 0) or c == 0:

这是python中的快捷方式语法,用于检查ab是否都等于0。

编辑:根据澄清;

  

要求是确认没有将0作为参数传递给函数

如果您可以放心地假设您的参数将是整数,那么我将采用以下方法:

if a and b and c:
    pass  # valid
else:
    pass  # invalid

0是错误的-因此让我们使用事实。否则,执行工作就没有真正的“捷径”。