示例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”运算符进行比较,而不是每行重复两次变量?
答案 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)
。