Множественные условия с операторами 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 . Это не имеет никакого отношения к естественному языку "

  • Проверка на стороне клиента в openerp
  • Недопустимый метод python cmd completedefault ()
  • Как я могу читать файл CSV за строкой, отслеживая заголовки столбцов?
  • Пиратский движок Google App, пишущий csv на арабском языке
  • Сравнение производительности MongoDB и RethinkDB Bulk Insert
  • Сделать syscall в Python
  • Сериализация вывода на JSON - ValueError: обнаружено круговое задание
  • Преобразование изображений .jpg в .png
  • Форматировать десятичный объект Python с заданной точностью
  • Ошибка импорта: ни один модуль с именем pytz после использования easy_install
  • Загрузка и загрузка файлов с помощью фляжки
  •  
    Interesting Posts for Van-Lav

    Как структурировать стандартный проект Python (модули, библиотеки) для будущего использования в Google App Engine?

    Python: SWIG vs ctypes

    Как сделать изменения переменной среды в Python?

    Элемент в настоящее время не виден и поэтому не может взаимодействовать с Selenium Dropdown Box Python

    Объедините три списка в Словарь, но все неуместно / не напечатано

    Развертывание Python и зависимостей от эластичного бобового стебля

    повторение ctypes rshift для c_ulong

    Сравнение общих элементов между 2 списками

    Как убить дочерний процесс python, созданный с помощью subprocess.check_output (), когда родитель умирает?

    Проверьте, содержит ли словарь python значение, и если да, возвращайте соответствующее значение

    Присвоение (вместо определения) метода __getitem__ magic прерывает индексирование

    Как определить, был ли запущен скрипт Python через командную строку?

    Как я могу получить «старый» zip () в Python3?

    Начинающий скрежет, продолжайте получать пустые списки

    Как я могу заставить PyCharm распознавать статические файлы?

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