Условный оператор в 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