Как использовать оператор ИЛИ в выражении 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) является ложным).

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