September 19, 2023

Урок 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:, то всё наоборот.

Тест по пройденному материалу