Урок 2.3. Условные конструкции
Представьте, что вам нужно написать программу, которая определяет, является ли число четным.
Эту задачу не выйдет решить простой последовательностью команд. В какой-то момент программа должна определить, соблюдается ли условие, и в зависимости от этого выполнить ту или иную команду.
Такой алгоритм можно реализовать с помощью условной конструкции или ветвления. Вот так:
num = int(input()) if num % 2 == 0: print('Это число четное')
После ключевого слова if
мы пишем условие, которое должно соблюдаться, чтобы команды, которые написаны ниже, были выполнены. Затем ставим двоеточие, переходим на новую строку и добавляем отступ в четыре пробела. Этот отступ очень важен – с помощью него выделяются все команды, выполняемые при соблюдении условия.
В среде разработки VS Code такой отступ ставится автоматически и его можно убрать одним нажатием клавиши Backspace
. Если у вас автоматически не появляется отступ, то вы, скорее всего, забыли поставить двоеточие.
Также отступ в четыре пробела можно быстро добавить, нажав клавишу Tab
.
Первая команда, записанная без отступа, уже не входит в условную конструкцию и будет выполнена независимо от соблюдения условия, записанного после if
.
Такая программа выводит строку ‘Это число четное’, если условие num % 2 == 0
выполняется, и не делает ничего, если это условие не соблюдено.
num = int(input()) if num % 2 == 0: print('Это число четное') else: print('Это число нечетное')
Улучшим нашу программу. Теперь, если условие не соблюдается, то программа сообщит об этом. Чтобы это реализовать, используем слово else
, затем поставим двоеточие и напишем блок команд, которые будут выполняться, если условие, написанное после if
, НЕ выполняется. Перед этими командами тоже нужен отступ. Но перед словом else
отступа нет!
Вложенные условные конструкции
Теперь напишем программу, которая переводит оценку из десятибалльной системы в пятибалльную. Можно написать три отдельные условные конструкции:
mark = int(input()) if 8 <= mark <= 10: print(5) if 6 <= mark <= 7: print(4) if 4 <= mark <= 5: print(3) else: print(2)
Но это неудачный код. Можно его упростить, «вложив» одну условную конструкцию в другую:
mark = int(input()) if 8 <= mark <= 10: print(5) else: if 6 <= mark <= 7: print(4) else: if 4 <= mark <= 5: print(3) else: print(2)
Обратите внимание на отступы. В каждой условной конструкции слова if
и else
находятся на одном уровне, с одинаковой длиной отступа.
Каскадные условные конструкции
Нашу программу для перевода оценок можно сделать ещё красивее, использовав только одну условную конструкцию. Правда, необычную:
mark = int(input()) if 8 <= mark <= 10: print(5) elif 6 <= mark <= 7: print(4) elif 4 <= mark <= 5: print(3) else: print(2)
Такая условная конструкция называется каскадной. В ней используется ключевое слово elif
. Если первое условие, написанное после слова if
, не соблюдено, то мы можем проверить еще одно или несколько условий, записывая их после слова elif
и ставя после этого двоеточие.
Обратите внимание, что слова if
, elif
и else
в одной и той же условной конструкции находятся на одном уровне, с одинаковой длиной отступов.
Бонус
Из предыдущей статьи вы знаете, что условие, которое записывается после слов if
и elif
, является способом определения логического значения. Команды в условной конструкции выполняются, если условие принимает значение True
.
Получается, что мы можем написать if True:
, и тогда блок команд if
будет выполняться всегда, а блок команд else
– никогда. Если напишем if False:
, то всё наоборот.