如何在python中生成OR语句?

2024-04-29 09:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这不起作用:

            file = "v3a2"
            if "v1" or "v2" in file:
                v1.write(total)
            elif "v3" in file:
                print "never here?????"

如何表述?


Tags: orinifherev3v2filewrite
2条回答
        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:

如果要检查的项超过2或3,那么使用any的版本看起来更好

试试看

 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的直接链接,因为我找不到上面的链接。

相关问题 更多 >