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

В этом посте рассказываю об условном операторе в Python

Видео на YouTube

Кому проще и понятнее разобраться в формате видео — выложил на YouTube:

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

В этом уроке разберём одну из важнейших конструкций программирования — условный оператор if. Именно с его помощью программы принимают решения на основе определённых условий.

Оператор if проверяет записанное после него условие: если оно вычисляется в True, выполняется код внутри блокаif. Если в False — блок пропускается.

Пример использования

n = 42
if n > 0:
    result = "n больше 0"

result  # 'n больше 0'

Здесь n > 0 — это оператор сравнения "больше". Такие операторы мы разберём подробнее в уроке о модуле operator.

Отступы в блоках кода

В Python отступы обязательны. Если не поставить отступ после if, возникнет ошибка IndentationError:

n = 42
if n > 0:
result = "n больше 0"
# IndentationError: expected an indented block after 'if' statement

Важно также, чтобы количество пробелов в пределах одного блока было одинаковым — иначе снова будет IndentationError:

n = 42
if n > 0:
    n = 0
     result = "n теперь 0"
# IndentationError: unexpected indent

По стандарту PEP 8 для отступов принято использовать ровно 4 пробела.

Переменные внутри блока if

Переменные, созданные внутри блока if, существуют только если условие выполнилось. Если условие False — переменная не создаётся:

n = -1
if n > 0:
    no_result = "n больше 0"

no_result  # NameError: name 'no_result' is not defined

Ключевое слово else

Если условие в if ложно, можно указать блок else — он выполнится в этом случае:

n = -1
if n > 0:
    result = "n больше 0"
else:
    result = "n не больше 0"

result  # 'n не больше 0'

Вложенные if

Как и в любом блоке, внутри if можно использовать другие if:

n = 0
if n > 0:
    result = "n больше 0"
else:
    if n == 0:
        result = "n равно 0"
    else:
        result = "n меньше 0"

result  # 'n равно 0'

Ключевое слово elif

Чтобы не писать вложенные if, можно использовать elif (сокращение от else if):

n = 0
if n > 0:
    result = "n больше 0"
elif n == 0:
    result = "n равно 0"
else:
    result = "n меньше 0"

result  # 'n равно 0'

Тернарный оператор

Есть и короткая форма записи ifтернарный оператор. Он записывается в одну строку:

n = 1
result = "n больше 0" if n > 0 else "n не больше 0"
result  # 'n больше 0'

Здесь сначала вычисляется условие. Если оно True, берётся выражение до else, иначе — после. Важно: в такой конструкции блок else обязателен.

n = 1
result = "n больше 0" if n > 0
# SyntaxError: expected 'else' after 'if' expression

Логические операторы

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

Оператор and (логическое И)

Условие с and истинно, если оба подусловия истинны:

n = 6
if n % 2 == 0 and n % 3 == 0:
    result = "n делится на 6"

result  # 'n делится на 6'

Оператор or (логическое ИЛИ)

Условие с or истинно, если хотя бы одно из подусловий истинно:

n = -1
if n > 0 or n < 0:
    result = "n не равно 0"
else:
    result = "n равно 0"

result  # 'n не равно 0'

Оператор not (логическое отрицание)

Оператор not инвертирует значение выражения:True превращает в False и наоборот.

n = 0
if not n:
    result = "n равно 0"

result  # 'n равно 0'

Приоритет операторов

В Python приоритет логических операторов следующий: not → and → or. Сначала выполняется not, затем and, потом or.

result = not False and True or False
result  # True

То же выражение со скобками:

result = ((not False) and True) or False
result  # True