Python中的or语句和or和not引起麻烦

时间:2018-10-12 03:07:14

标签: python

由于某种原因,它总是使所有内容通过。

if (keyphrase or keyphrase2 in comment.body) and ("Proof" or "proof" or "roof" or "Roof" or "woof" or "Woof" not in comment.body):
#do stuff

抱歉,我是Python新手。

2 个答案:

答案 0 :(得分:2)

您应将anyall与生成器表达式一起使用,以测试成员资格的多个值:

if any(k in comment.body for k in (keyphrase, keyphrase2)) and all(k not in comment.body for k in ("Proof", "proof", "roof", "Roof", "woof", "Woof")):

答案 1 :(得分:1)

您可能会期望:

if (x or y in z):

与以下相同:

if (x in z) or (y in z):

但实际上是:

if (x) or (y in z):

因此,x的任何类似True的值都将允许您输入if块体。

有几种方法可以获取所需的内容,其中一种是any函数和一个生成器表达式):

if any(thing in z for thing in [x,y])