Несколько условий python

Python 3

Есть список mis, который в себе содержит распознанные слова. При запуске код игнорирует любые слова в списке и выполняет действия при первом условии (строки 2-4).

    if ('открой' or 'запусти' or 'open' in mis):
        say('секунду...')
        open(mis)
    elif 'остановись' in mis:
        print('Без Б')
        say("Код остановлен")
        sys.exit()
    else:
        do(hear())

Вопросы:

  1. Почему он выполняет первое условии, если в листе не было слов из условия?
  2. Как сделать так, чтобы было несколько вариантов слов для в условии для исполнения?

Хотелось бы решение без повторения "in mis" как ниже:

if ('открой' in mis or 'open' in mis):
    say("секунду...')
...

Ответы (1 шт):

Автор решения: Victor VosMottor thanks Monica
  1. Непустая строка всегда истинна в питоне. Стало быть: 'открой' or 'запусти' or 'open' — Всегда True.
  2. Вы хотите:
if any(word in mis for word in ('открой', 'запусти', 'open')):
...

OR

if any(map(lambda word: word in mis, ('открой', 'запусти', 'open'))):
...
→ Ссылка