Множественные условия с операторами if / elif

Я пытаюсь получить инструкцию if для запуска из более чем одного условия, не переписывая оператор несколько раз с помощью разных триггеров. например:

if user_input == "look": print description if user_input == "look around": print description 

Как бы вы конденсировали их в одно утверждение?

Я пробовал использовать 'или', и это вызвало любое raw_input вообще, чтобы вызвать оператор независимо от того, соответствует ли вход одному из условий.

 if user_input == "look" or "look around": print description 

2 Solutions collect form web for “Множественные условия с операторами if / elif”

То, что вы пытаетесь сделать, это

 if user_input == "look" or user_input == "look around": print description 

Другой вариант, если у вас много возможностей:

 if user_input in ("look", "look around"): print description 

Поскольку вы используете 2.7, вы также можете написать его (это работает в версии 2.7 или 3+, но не в 2.6 или ниже):

 if user_input in {"look", "look around"}: print description 

который делает set ваших элементов, который очень немного быстрее для поиска (хотя это имеет значение только в том случае, если количество элементов, которые вы проверяете, намного больше, чем 2).


Причина, по которой ваша первая попытка всегда прошла, – это. Большинство вещей в Python оценивают True (кроме False , None или пустых строк, списков, dicts, …). or принимает две вещи и оценивает их как булевы. Таким образом, user_input == "look" or "look around" обрабатывается как (user_input == "look") or "look_around" ; если первая ложна, это похоже на то, что вы написали, if "look_around": который всегда будет проходить.

Вы можете использовать регулярные выражения для соответствия строкам, если они следуют шаблону с необязательными разделами, или вы можете выполнить поиск массива:

 if user_input in ["look", "look around"]: print description 

Логический оператор or работает только с булевыми значениями, он вычисляет выражения с обеих сторон и возвращает True если одно из выражений принимает значение True . Это не имеет никакого отношения к естественному языку "

Python - лучший язык программирования в мире.