2024-04-29 09:19:55 发布
网友
为什么这不起作用:
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
True
bool("v1")==True
你可以说
if any(x in file for x in ["v1", "v2"]):
或者
if "v1" in file or "v2" in file:
如果要检查的项超过2或3,那么使用any的版本看起来更好
any
试试看
而不是
也许对Python Boolean Operations的回顾会有帮助。在总结页面的底部,还有一个操作符优先级表。如果查阅表,可以看到由于in运算符的优先级高于or运算符,因此表达式的解释如下:
in
or
而不是你所期望的。
还要注意,正如@sepp2k在下面一条有用的注释中提到的,如果or具有比in更高的优先级,那么您的表达式将以if ("v1" or "v2") in file:结束,这也将无法按您预期的方式工作。
if ("v1" or "v2") in file:
这里有一个到另一个table of operator precedence的直接链接,因为我找不到上面的链接。
相当于
它总是
True
,因为bool("v1")==True
你可以说
或者
如果要检查的项超过2或3,那么使用
any
的版本看起来更好试试看
而不是
也许对Python Boolean Operations的回顾会有帮助。在总结页面的底部,还有一个操作符优先级表。如果查阅表,可以看到由于
in
运算符的优先级高于or
运算符,因此表达式的解释如下:而不是你所期望的。
还要注意,正如@sepp2k在下面一条有用的注释中提到的,如果
or
具有比in
更高的优先级,那么您的表达式将以if ("v1" or "v2") in file:
结束,这也将无法按您预期的方式工作。这里有一个到另一个table of operator precedence的直接链接,因为我找不到上面的链接。
相关问题 更多 >
编程相关推荐