The Python Programming Guide

Оператор if-else

Очень часто в программах надо выполнить ряд инструкций только в том случае, если соблюдаются определённые условия. Для обработки таких ситуаций в языках программирования имеются операторы управления. Эти операторы используются для управления потоком выполнения программы - создания циклов, пропуска какой-либо инструкции, когда условие истинно, и т.д.

Оператор if

Синтаксис для if следующий:

if <условие>:
    <инструкция 1>
    ...
    <инструкция N>

<инструкция M>      # окончание блока, т.к. отступ вернулся на предыдущий уровень

После оператора if идёт условие, т.е. логическое выражение, которое возвращает True или False. Окончание оператора обозначается с помощью символа :. В строках далее идут инструкции, которые начинаются с отступа. Всю эту конструкцию обычно называют условным блоком или блоком if. Пример:

value = 5 + 5

if value > 15:
    print("Число больше пятнадцати!")

print("Данная строка не входит в условный блок")

Оператор if-else

Блок else, следующий за блоком if, является опциональным и позволяет задать инструкции для случая, когда ни одно предыдущее условие не оказалось истинным.

Синтаксис для if-else:

if <условие>:
    <инструкция 1>
    ...
    <инструкция N>

else:               # опциональная часть
    <инструкция 1>
    ...
    <инструкция N>

<инструкция M>      # окончание блока, т.к. отступ вернулся на предыдущий уровень

Пример:

password = input("Введите пароль: ")

if password == "qwerty":
    print("Пароль верный!")

else:
    print("Неверный пароль.")
print("Данная строка не входит в условный блок")

Вложенный условный блок

Для сложных условных ‘цепочек’ можно использовать вложенные условные блоки:

points = int(input("Введите кол-во баллов: "))

if points >= 90:
    print("Ваша оценка: отлично")
else:
    if points >= 76:
        print("Ваша оценка: хорошо")
    else:
        if points >= 63:
            print("Ваша оценка: удовлетворительно")
        else:
            print("Ваша оценка: неудовлетворительно")

Вывод 1:

Введите кол-во баллов: 93
Ваша оценка: отлично

Вывод 2:

Введите кол-во баллов: 70
Ваша оценка: удовлетворительно

Когда интерпретатор переходит к 3-ей строке к оператору if-else, проверяется условие. Если оно неверно, тогда переходит к блоку else и аналогично проверяет вложенные в блок else другие условные блоки. Стоит заметить, что каждый условный блок находится на разном уровне отступа.

Хотя вложенные операторы if-else и позволяют проверять несколько условий, их бывает сложно воспринимать визуально. Данный пример можно сделать более читаемым с помощью конструкции if-elif-else.

Оператор if-elif-else

Блок elif (сокращение от else и if), следующий за блоком if, является опциональным и позволяет определить дополнительный условный блок со своим набором инструкций. Конструкций elif может быть бесконечно много, но располагаются они только после основного блока if. В конце и только в конце можно при случае добавить блок else, если другие условия не выполняются.

Синтаксис для if-elif-else:

if <условие>:
    <инструкция 1>
    ...
    <инструкция N>

elif <условие>:     # опциональная часть
    <инструкция 1>
    ...
    <инструкция N>

else:               # опциональная часть
    <инструкция 1>
    ...
    <инструкция N>

<инструкция M>      # окончание блока, т.к. отступ вернулся на предыдущий уровень

Пример:

points = int(input("Введите кол-во баллов: "))

if points >= 90:
    print("Ваша оценка: отлично")

elif points >= 76:
    print("Ваша оценка: хорошо")

elif points >= 63:
    print("Ваша оценка: удовлетворительно")

else:
    print("Ваша оценка: неудовлетворительно")

Вывод 1:

Введите кол-во баллов: 93
Ваша оценка: отлично

Вывод 2:

Введите кол-во баллов: 70
Ваша оценка: удовлетворительно

Тернарный оператор if-else

Блок if-else также может быть использован в качестве тернарного оператора. В таком блоке обязательно используется три операнда. В других языках программирования используется конструкция <условие> ? <выражение 1> : <выражение 2>.

Синтаксис тернарного оператора if-else:

<выражение 1> if <условие> else <выражение 2>

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

value = 5

print("Число положительное") if value >= 0 else print("Число отрицательное")
Число положительное

Пример 2:

time = int(input("Введите текущее время в часах: "))
cycle = "прошлое" if time < 0 else "ночь" if time < 6 else "утро" if time < 12 else "день" if time < 18 else "вечер" if time < 24 else "будущее"

print("Текущий дневной цикл:", cycle)

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

Подсказка

Для многострочной записи однострочной записи выражения можно использовать символ \ (символ продолжения строки) в конце строки. Интерпретатор в данном случае будет считать, что строка кода не была окончена и перейдет к следующей:

cycle = "прошлое" if time < 0 else "ночь" \
    if time < 6 else "утро" if time < 12 else "день" \
    if time < 18 else "вечер" if time < 24 else "будущее"

Также можно использовать круглые скобки вокруг выражения. Аналогичная запись:

cycle = ("прошлое" if time < 0 else "ночь"
    if time < 6 else "утро" if time < 12 else "день"
    if time < 18 else "вечер" if time < 24 else "будущее")