为什么这不起作用:
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
如何制定这个?
为什么这不起作用:
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
如何制定这个?
if "v1" or "v2" in file:
相当于
if ("v1") or ("v2" in file):
这将永远是True
因为bool("v1")==True
你可以说
if any(x in file for x in ["v1", "v2"]):
或者
if "v1" in file or "v2" in file:
any
如果要检查的项目超过 2 或 3 个,带有的版本看起来会更好
尝试
if "v1" in file or "v2" in file:
代替
if "v1" or "v2" in file:
也许对 Python布尔运算的回顾可能会有所帮助。在摘要中该页的底部还有一个运算符优先级表。如果您查阅表格,您可以看到由于in
运算符的优先级高于or
运算符,因此表达式解释如下:
if ("v1") or ("v2" in file):
而不是您的预期/意图。
另请注意,正如@sepp2k 在下面的有用评论中提到的那样,如果or
优先级高于in
,则您的表达式最终if ("v1" or "v2") in file:
将不会按照您的预期工作。
这是指向另一个运算符优先级表的直接链接,因为我找不到上面的一个。