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