Оператор 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 "будущее")