Как использовать оператор ИЛИ в выражении Python If?

  1. Хлебные крошки
  2. ► Программирование на Python
  3. ► ► Условные операторы
  4. ► ► ► Как использовать оператор ИЛИ в операторе Python If?
  • Типы данных Python
  • Условные операторы
  • Python — Условные операторы
  • Python — If
  • Python — If else
  • Python — Elif
  • Python — если И
  • Python — Если ИЛИ
  • Python — Если НЕ
  • Python — Тернарный оператор
  • Циклы Python

Предыдущий Следующий

9 0042 ⊖

Содержание

Python Если с OR

Вы можете комбинировать несколько условия в одно выражение в Python if, Python If-Else или Python Elif.

В следующих примерах мы увидим, как мы можем использовать логический оператор Python OR для формирования составного логического выражения.

Логический оператор Python OR возвращает True , если один из двух предоставленных ему операндов оценивается как true.

Примеры

1. Оператор If с оператором ИЛИ

В следующем примере мы узнаем, как использовать оператор Python или для объединения двух простых логических условий в составное логическое условие.

Программа Python

 сегодня = 'Суббота'
если сегодня=='воскресенье' или сегодня=='суббота':
print('Сегодня выходной. Отдыхайте дома.') 
Выполнить код онлайн

Вывод

 Сегодня выходной. Отдых дома. 

Здесь сегодня=='воскресенье' и сегодня=='суббота' — это два простых условия. Мы использовали оператор и, чтобы соединить эти два простых условия и создать составное условие: сегодня=='воскресенье' или сегодня=='суббота' .

2. Оператор If-Else с оператором ИЛИ в условии/выражении

В следующем примере мы будем использовать или 9Оператор 0005 для объединения двух основных условных выражений в логическое выражение.

Программа Python

 сегодня = 'Среда'
если сегодня=='воскресенье' или сегодня=='суббота':
print('Сегодня выходной. Отдыхайте дома.')
еще:
print('Иди на работу.') 
Выполнить код онлайн

Вывод

 Иди на работу. 

3. Оператор Elif с оператором ИЛИ в условии/выражении

В следующем примере мы будем использовать оператор или для объединения двух основных условных выражений в логическое выражение оператора elif.

Программа Python

 сегодня = 'воскресенье'
если сегодня=='понедельник':
print('Ваши выходные закончились. Идите на работу.')
elif сегодня=='воскресенье' или сегодня=='суббота':
print('Сегодня выходной.')
еще:
print('Иди на работу') 
Выполнить код онлайн

Вывод

 Сегодня выходной.  

Резюме

В этом руководстве по примерам Python мы узнали, как использовать Python или логический оператор с условным оператором Python: if, if-else и elif с подробными примерами.

⫷ Предыдущий учебникСледующий учебник ⫸

Python — If AND Python — If NOT

Получить, какое условие или выполняется в операторе if в Python

спросил

Изменено 1 год, 5 месяцев назад

Просмотрено 3к раз

У меня есть следующий оператор if Python:

, если элемент1 в списке[2] или элемент2 в списке[2] или 3 в списке[2]: сделать еще несколько операторов if... еще: напечатать что-нибудь...

Можно ли напечатать (или каким-то образом получить), какие из ИЛИ-условий выполняются (если они есть)? Поскольку в предложении if есть другие операторы if, я не хочу использовать три разных оператора if, которые были бы одним решением. Но это приведет к почти 12 различным операторам if. Я просто хочу зарегистрировать, какое условие выполнено для дальнейшего анализа. Я конечно гуглил, но так ничего и не нашел. Заранее спасибо.

Редактировать : Пример использования: попробуйте реализовать алгоритм поиска с функциями «И» и «ИЛИ». Я уверен, что можно было бы написать намного лучше и чище, но сейчас важно то, что работает 😉

  • python
  • оператор if
  • условный оператор
1

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

 a = элемент1 в списке[2]
b = элемент2 в списке[2]
с = 3 в списке[2]
если a или b или c:
    print(f"{element1} {'in' if a else 'not in'} list[2]")
    print(f"{element2} {'in' if b else 'not in'} list[2]")
    print(f"3 {'in' if c else 'not in'} list[2]")
 

Тем не менее, это устраняет любые преимущества короткого замыкания, поскольку все выражения должны быть вычислены.

В python 3. 8+ вы можете использовать выражения присваивания:

 if (a := (element1 in list[2])) или \
   (b := (элемент2 в списке[2])) или \
   (с := (3 в списке[2])):
    пытаться:
        print(f"{element1} {'in' if a else 'not in'} list[2]")
        print(f"{element2} {'in' if b else 'not in'} list[2]")
        print(f"3 {'in' if c else 'not in'} list[2]")
    кроме NameError:
        проходить
 

Имейте в виду, что у этого подхода есть противоположная проблема: некоторые имена могут не быть назначены из-за короткого замыкания. Вы не будете знать результат для любого имени после первого ложного.

Другой способ, если у вас действительно много условий, состоит в том, чтобы создать список вместо того, чтобы называть каждое отдельно:

 test = [element1, element2, 3]
x = [t в списке[2] для t в тесте]
если есть(х):
    для t, r в zip(test, x):
        print(f"{t} {'in' if r else 'not in'} list[2]")
 

Можно даже использовать наборы:

 test = {element1, element2, 3}
s2 = установить (список [2])
х = тест и s2
если х:
    print('{x!r} в списке[2]')
    если у := тест - х:
        print('{y} отсутствует в списке[2]')
 

Выбор зависит от вашего конкретного варианта использования.

5

Если вам нужен более чистый код, я бы предложил поместить проверку оператора if внутрь функции и использовать регистратор для регистрации истинности оператора.

 журнал импорта
def elem_in_list (элемент, список):
    если элемент в списке[2]:
        logging.info(f"{elem} есть в списке")
        вернуть Истина
    logging.info(f"{elem} отсутствует в списке")
    вернуть ложь
если elem_in_list(element1, list) или elem_in_list(element2, list) или elem_in_list(element3, list):
    # делать больше операторов if
еще:
    распечатать (что-то)
 

Это, возможно, более чистый способ сделать это, но, насколько мне известно, вы не можете обойтись без множества операторов if для сравнений.

1

Я бы, вероятно, сделал что-то вроде этого, если бы хотел использовать короткое замыкание рычага:

Создайте переменную условия с известным начальным значением. Затем создайте цепочку else-if со всеми вашими условиями и для каждого из них установите другое значение для переменной условия , если логическое выражение оценивается как True . Затем создайте оператор

if после блок else-if , который проверяет, изменилось ли значение переменной условия .

 условие = 0
если (выражение)==(выражение):
    условие = 1
Элиф (выражение)==(выражение):
    условие = 2
Элиф (выражение)==(выражение):
    условие = 3
если условие:
   # здесь выполняем обычные действия
   если условие == 1:
       print(f"Выполнено условие ОДИН!")
 

Вы также можете выполнить любой код, зависящий от условия, в блоке else-if вместо выполнения его в последних , если блок , если вы считаете, что в вашем случае это будет более читабельно.

Вы также можете переместить общий код, который необходимо выполнять в нескольких случаях, в функцию.

 если (выражение)==(выражение):
    # case 1 код здесь
    общий_код()
Элиф (выражение)==(выражение):
    # здесь код случая 2
    общий_код()
Элиф (выражение)==(выражение):
    # случай 3 код здесь
    # Может быть, здесь не нужно вызывать common_code()? Это решение достаточно гибкое. 
 

Вы можете сделать что-то вроде этого:

, если элемент1 в списке[2] или элемент2 в списке[2] или 3 в списке[2]:
    если элемент1 в списке[2]:
        print('Элемент1 найден в списке[2]')
    если элемент2 в списке[2]:
        print('Элемент1 найден в списке[2]')
    если элемент3 в списке[2]:
        print('Элемент1 найден в списке[2]')
    #=== сделайте еще несколько операторов if...
еще:
   #== напечатать что-нибудь...
 

Внутри сгруппированного условия if вы можете проверить, какое условие было действительно выполнено.
Я не знаю лучшего способа сделать это.

2

Думаю, для этой цели можно использовать словарь Python. Например:

 список1=[список2,список2,список2]
список2=[3,4,6]
список3=[4,6,7]
элемент1=0
элемент2=0
если элемент1 в списке1[2] или элемент2 в списке1[2] или 3 в списке1[2]:
  dict_conditions={"Условие 1":str(элемент1 в списке1[2]),"Условие 2":str(элемент2 в списке1[2]) ,"Условие 3":str(3 в списке1[2])}
  печать (дикт_условия)
 

Будет напечатан следующий вывод:

 {'Условие 1': 'Ложь', 'Условие 2': 'Ложь', 'Условие 3': 'Истина'}
 

Это можно сделать очень просто, сделав результатом каждого условия имя/число:

 >>> res = ((элемент1 в lst[2] и 1) или
. .. (элемент2 в lst[2] и 2) или
... (3 в lst[2] и 3))
>>> если разрешение:
... print('условие', res, 'успешно')
...
условие 2 выполнено
 

Если вы используете python >= 3.8, это можно сделать более аккуратно, например так:

 если (рез := (элемент1 в списке[2] и 1) или
           (элемент2 в lst[2] и 2) или
           (3 в списке [2] и 3)):
    print('условие', разрешение, 'успешно')
 

Если ни одно из условий не выполняется, res будет равно False , в противном случае это будет имя/номер того условия, которое было успешно выполнено.


Причина, по которой это работает, объясняется в справочнике по python для логических выражений:

Выражение x и y сначала оценивает х ; если x ложно, его значение равно вернулся; в противном случае оценивается y , и результирующее значение равно вернулся.

Таким образом, для того, чтобы описанный выше подход работал правильно, имя/число должно оцениваться как истинное (поэтому просто избегайте использования пустых строк, нулей или чего-либо, для чего bool(n) является ложным).