Как использовать оператор ИЛИ в выражении Python If?
- Хлебные крошки
- ► Программирование на Python
- ► ► Условные операторы
- ► ► ► Как использовать оператор ИЛИ в операторе 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
- условный оператор
Вы можете присвоить логические значения именам:
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]')
Выбор зависит от вашего конкретного варианта использования.
Если вам нужен более чистый код, я бы предложил поместить проверку оператора 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
. Затем создайте оператор
.
условие = 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
вы можете проверить, какое условие было действительно выполнено.
Я не знаю лучшего способа сделать это.
Думаю, для этой цели можно использовать словарь 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)
является ложным).