Python OR运算符和括号

时间:2015-01-05 20:42:33

标签: python

示例1 - 这有效:

def thisorthat():
    var = 2

    if (var == 3 or var == 2):
        print "i see the second value"
    elif (var == 2 or var == 15):
        print "I don't see the second value"

thisorthat()

示例2 - 这不起作用:

def thisorthat():
    var = 2

    if var == (3 or 2):
        print "i see the second value"
    elif var == (2 or 15):
        print "I don't see the second value"

thisorthat() # "I don't see the second value"

有没有办法将变量与“OR”运算符进行比较,而不是每行重复两次变量?

2 个答案:

答案 0 :(得分:6)

这是一种等效方式:

if var in [2, 3]:
    ...
elif var in [2, 15]:
    ...

并且每个条件只使用var一次。

备注:

  • 这不是直接使用OR
  • 第二种情况下的2并没有多大意义。

答案 1 :(得分:0)

解释你做错了什么:

在Python中,or并不总是像英语一样工作。它需要两个参数,并查看它们中的任何一个是否具有布尔值True(返回第一个参数)。所有非零数字都具有布尔值True,因此var == (3 or 2)被评估为var == 3,其中var为2,评估为False。当你执行var == (2 or 15)时,得到var == 2,这是真的,因此执行elif语句下面的代码。

如同建议的那样,您应该改为var in (3, 2)