为什么这个不行:如何在python中创建OR语句?
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
如何制定呢?
为什么这个不行:如何在python中创建OR语句?
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的Boolean Operations的审查可能会有所帮助。在摘要页面的底部还有一个运算符优先级表。如果你咨询的表格,你可以看到,自in
运营商具有比or
操作的优先级高,表达这样解释:
if ("v1") or ("v2" in file):
,而不是你的预期/何意。
还要注意的是,如@ sepp2k下面有帮助的评论提到,如果or
有更高的优先级比in
,你的表现最终会为if ("v1" or "v2") in file:
也不会工作,你希望的方式。
这是直接链接到另一个table of operator precedence,因为我找不到上述的一个。
非空字符串都在自己的“真实十岁上下的”,所以'如果“V1”'被返回true。 – 2012-08-15 22:53:07
如果文件中的v1或文件中的v2工作 – jorrebor 2012-08-15 22:55:21
要对发生的事情添加更多的说明:您的条件被解析为if(“v1”)或(文件中的“v2”):...,并且每个Python中的对象具有某种真值。 – millimoose 2012-08-15 22:56:14