Проблема с или, и, а не в том, если в Python утверждений

1

По какой-то причине он всегда проходит все.

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 извините.

  • 1
    какой пример вывода не пройдет ваше состояние? Будьте более конкретны в вопросе.
  • 0
    Можете ли вы объяснить больше о контексте, который вы делаете?
Показать ещё 1 комментарий
Теги:

2 ответа

2

Вы должны использовать any и all с генераторными выражениями для проверки нескольких значений для членства:

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

Вы можете ожидать:

if (x or y in z):

Чтобы быть таким же:

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

Но на самом деле это:

if (x) or (y in z):

Таким образом, любое значение True, равное x, позволит вам ввести тело if блока.

Есть несколько вариантов, чтобы получить то, что кажется, что вы ищете, одно - any функция и выражение генератора):

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню