Содержание Show
В предыдущей статье мы научились писать программы, в которых выполнялись все строки. Но Python, как и многие другие языки программирования, предоставляет разработчикам инструменты для ветвления логики программы. Условный оператор
является основным средством для реализации такого ветвления. С его помощью можно исполнять различные блоки кода в зависимости от того, выполняется ли определенное условие.if
В этой статье мы подробно рассмотрим условный оператор в Python и научимся его эффективно использовать.
if elif else
Давайте рассмотрим синтаксис условных операторов Python на примере практической задачи. Представим, что программа запрашивает у пользователя текущую температуру воздуха в градусах Цельсия.
В зависимости от введенной температуры, программа предлагает, какую одежду лучше надеть на сегодня, а также напоминает о необходимости взять зонтик, если идет дождь.
temperature = int(input("Введите текущую температуру воздуха (в градусах Цельсия): "))
if temperature > 25:
print("Сегодня тепло! Наденьте футболку и шорты.")
elif 15 <= temperature <= 25:
print("Сегодня прохладно. Рекомендуется надеть легкий свитер и джинсы.")
elif 5 <= temperature < 15:
print("Сегодня холодно. Лучше надеть куртку и шерстяной свитер.")
else:
print("Очень холодно. Не забудьте про теплую куртку, шапку, шарф и перчатки!")
# Дополнительные рекомендации на основе погоды
rainy = input("Идет дождь? (да/нет): ")
if rainy.lower() == "да":
print("Не забудьте зонтик или наденьте дождевик!")
Так самый простой условный оператор в Python выглядит как
-условиеif
:
после
идет условие, которое оценивается как if
(истина) или True
(ложь). Завершается условие символом «двоеточие». Затем — обязательный отступ в четыре пробела, он показывает, что строки объединяются в один блок. False
И если условие истинно, выполняется блок кода, расположенный сразу после условия:
answer = input('Какой язык программирования ты изучаешь?')
if answer == 'Python':
print('Отличный выбор!')
print('Python - мощный и универсальный язык программирования.')
Предыдущая программа выводит текст в случае, если условие истинно. Но если условие ложно, то программа ничего не выводит. Для того чтобы обеспечить возможность выполнять что-либо в случае, если условие оказалось ложным, мы используем ключевое слово
. else
Используя
после else
, можно задать альтернативные действия для случаев, когда условие if
не выполняется.if
answer = input('Какой язык программирования ты изучаешь?')
if answer == 'Python':
print('Отличный выбор!')
print('Python - мощный и универсальный язык программирования.')
else:
print(f'{answer} - это серьезный выбор!')
print(f'Желаю успехов в изучении {answer}')
Если требуется проверить несколько условий, в языке Python используется
каскадный условный оператор.
Синтаксис каскадного условного оператора имеет следующий вид:
В условном операторе сначала проверяется условие 1. Если оно истинно, исполняется соответствующий блок кода, и остальные условия игнорируются.
В случае ложного условия 1 программа проверяет
условие 2 и так далее по цепочке. elif
Если ни одно условие не истинно, выполняется блок кода после выражения
.else
Если необходимо проверить несколько условий подряд, используется elif
(сокращение от «el
se
»):if
temperature = float(input("Введите текущую температуру в градусах Цельсия: "))
if temperature > 30:
print("На улице жарко. Рекомендуется носить легкую одежду и пить больше воды.")
elif temperature > 20:
print("Погода теплая. Можно носить футболки и шорты.")
elif temperature > 10:
print("На улице прохладно. Рекомендуется надеть свитер или кофту.")
else:
print("На улице холодно. Не забудьте надеть пальто или куртку.")
print("Желаю вам хорошего дня!")
Синтаксис в
аналогичен elif
. Операторов if
для одного блока условного оператора может быть несколько, а может не быть совсем. Последним идёт оператор elif
, который не содержит условия, а выполняется, только если ни одно из предыдущих условий в else
и if
не выполнилось. Оператор elif
не является обязательным.else
Логические операторы
В условиях часто используются логические операторы
, and
и or
для сочетания или инвертирования нескольких условий:not
x = 7
if x > 5 and x < 10:
print("x больше 5 и меньше 10")
В качестве условия может выступать результат операции сравнения:
(больше);>
(больше или равно);>=
(меньше);<
(меньше или равно);<=
(равно);==
(не равно).!=
Для записи сложных условий можно применять логические операции:
— логическое «И» для двух условий. Возвращаетand
, если оба условия истинны, иначе возвращаетTrue
;False
— логическое «ИЛИ» для двух условий. Возвращаетor
, если оба условия ложны, иначе возвращаетFalse
;True
— логическое «НЕ» для одного условия. Возвращаетnot
для истинного условия, и наоборот.False
Ниже приведена таблица истинности для логических операций.
x | y |
| x | x |
---|---|---|---|---|
False | False | True | False | False |
False | True | True | True | False |
True | False | False | True | False |
True | True | False | True | True |
Моржовый оператор
Моржовый оператор (
) в Python позволяет назначать значения переменным как часть выражения. Этот оператор был введен в Python 3.8 и получил свое название из-за своего схожего внешнего вида с глазами и бивнями моржа.:=
Рассмотрим сценарий, в котором нам нужно считать строку от пользователя и выполнить действие, если строка не пустая:
Моржовый оператор может быть особенно полезен в циклах, условных выражениях и других ситуациях, где необходимо оптимизировать работу с переменными.
Match-case
Python 3.10 представил новый оператор
, который предоставляет более чистый и эффективный способ сопоставления значений с различными образцами. Он напоминает match
в других языках программирования, но обладает более выразительным синтаксисом и расширенной функциональностью. switch
match value:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>
После ключевого слова
указывается значение, которое нужно проверить на соответствие шаблону. В блоках match
указываются сами шаблоны и проверка осуществляется сверху вниз, пока не найдется совпадение. Обычно в самом низу ставят блок действий по умолчанию, он выполняется в том случае, когда не найдется ни один из шаблонов. case
Напишем программу, которая принимает от пользователя название месяца в виде строки и выводит соответствующий сезон года:
Для того, чтобы сравнить на несколько значений в одном блоке
, необходимо перечислить значения при помощи оператора case
|
Также оператор
можно использовать с условным оператором match
:if
Ещё по теме
- Оператор
также используется для так называемой проверки шаблона (pattern matching), почитать о которой можно в этом материале.match
- Cтандарт PEP622