Инструменты

Условный оператор

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

В этой статье мы подробно рассмотрим условный оператор в Python и научимся его эффективно использовать.

if elif else

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

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

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 (ложь). Завершается условие символом «двоеточие». Затем — обязательный отступ в четыре пробела, он показывает, что строки объединяются в один блок.

И если условие истинно, выполняется блок кода, расположенный сразу после условия:

Python
answer = input('Какой язык программирования ты изучаешь?')

if answer == 'Python':
    print('Отличный выбор!')
    print('Python - мощный и универсальный язык программирования.')


Предыдущая программа выводит текст в случае, если условие истинно. Но если условие ложно, то программа ничего не выводит. Для того чтобы обеспечить возможность выполнять что-либо в случае, если условие оказалось ложным, мы используем ключевое слово else.

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

Python
answer = input('Какой язык программирования ты изучаешь?')

if answer == 'Python':
    print('Отличный выбор!')
    print('Python - мощный и универсальный язык программирования.')
else:
    print(f'{answer} - это серьезный выбор!')
    print(f'Желаю успехов в изучении {answer}')

Если требуется проверить несколько условий, в языке Python используется 
каскадный условный оператор.

Синтаксис каскадного условного оператора имеет следующий вид:


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

В случае ложного условия 1 программа проверяет elif условие 2 и так далее по цепочке.

Если ни одно условие не истинно, выполняется блок кода после выражения else.

Если необходимо проверить несколько условий подряд, используется elif
(сокращение от «else if»):

Python
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 для сочетания или инвертирования нескольких условий:

Python
x = 7
if x > 5 and x < 10:
    print("x больше 5 и меньше 10")

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

  • > (больше);
  • >= (больше или равно);
  • <  (меньше);
  • <=  (меньше или равно);
  • == (равно);
  • != (не равно).

Для записи сложных условий можно применять логические операции:

  1. and — логическое «И» для двух условий. Возвращает True, если оба условия истинны, иначе возвращает False;
  2. or — логическое «ИЛИ» для двух условий. Возвращает False, если оба условия ложны, иначе возвращает True;
  3. not — логическое «НЕ» для одного условия. Возвращает False для истинного условия, и наоборот.

Ниже приведена таблица истинности для логических операций.

xynot xx or yx and y
FalseFalseTrueFalseFalse
FalseTrueTrueTrueFalse
TrueFalseFalseTrueFalse
TrueTrueFalseTrueTrue

Моржовый оператор

Моржовый оператор (:=) в 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:

Ещё по теме

  • Оператор match также используется для так называемой проверки шаблона (pattern matching), почитать о которой можно в этом материале.
  • Cтандарт  PEP622
Пред.
Задача №3: Valid Palindrome

Задача №3: Valid Palindrome

Содержание Show Условие задачиРешениеШаг 1: Нормализация строкиШаг 2: Проверка

След.
Задача №4: Move Zeroes

Задача №4: Move Zeroes

Дан массив целых чисел nums, и требуется переместить все нули в конец массива,