Python中if语句中的or、and和not有问题

2024-05-29 01:53:05 发布

您现在位置: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

我是新来的对不起


Tags: orandinifcomment原因bodyproof
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")):

您可能期望:

if (x or y in z):

与以下内容相同:

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

但实际上是:

if (x) or (y in z):

因此x的任何类真值都将允许您输入if块体

有几个选项可以获得您想要的结果,一个是any函数和生成器表达式):

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

相关问题 更多 >

    热门问题