Урок 3.2 · Программирование с нуля · Модуль 3. Условия · По подписке
Цель урока: Понять, как программа выбирает ветку через if, elif и else, и проверить промокод по-настоящему.
Нужно знать заранее: Сравнения
Зачем это нужно: В уроке 3.1 сравнения научились отвечать «да» или «нет». Но сам по себе ответ True или False ничего не делает: программа получила True и пошла дальше по той же дороге. Чтобы код действительно выбирал, нужна команда, которая смотрит на этот ответ и решает, какой блок выполнить. Она называется if — «если». Представьте интернет-магазин. Покупатель вводит промокод. Если код верный — скидка 20 %, если нет — скидки нет. Без if программа не может этого сделать: она либо всегда даёт скидку, либо никогда. С if появляется развилка: при одном ответе выполняется один блок, при другом — другой. То же самое в жизни: «если на улице дождь — взять зонт, иначе — не брать», «если возраст 18 или больше — пустить, иначе — показать отказ». А с оценками — три уровня: 90 и больше — «отлично», от 75 до 89 — «хорошо», меньше 75 — «повторить». Ученик попадает на первый уровень, который подошёл, и дальше не идёт. Почему 95 не попадает на второй уровень, хотя оно больше 75, разберём ниже. Ветвление — это и есть умение программы выбирать. В этом уроке мы проверим промокод по-настоящему: до сих пор скидка была задана числом, а теперь программа сама решит, давать её или нет.
Как это работает: if — «если». Пишется так: if условие: и с новой строки — блок с отступом. Если условие дало True, блок выполняется; если False — пропускается. else — «иначе». Стоит после if и выполняется тогда, когда условие if оказалось False. У else нет своего условия: это «во всех остальных случаях». elif — «иначе если». Нужен, когда вариантов больше двух. elif проверяет своё условие только тогда, когда все предыдущие оказались False. elif можно поставить несколько подряд. Двоеточие после условия обязательно: if promo == "SALE20":. Без него Python не поймёт, где начинается блок. Отступ — это пробелы в начале строки. Он показывает, какие команды входят в блок. Обычно ставят 4 пробела (в примерах урока — 2, чтобы короче). Все строки одного блока пишутся с одинаковым отступом. Кончился отступ — кончился блок. Порядок важен. Представьте мячики, которые падают сверху вниз через три кольца. Мячик — это балл: чем больше балл, тем больше мячик. Кольцо — это порог: 90, 75 и «всё остальное». Мячик пролетает сквозь кольцо, только если он меньше кольца. Если такой же или больше — застревает на нём и дальше не падает: уровень уже выбран. Кольца стоят сверху вниз от большого к меньшему. Мячик 95 больше кольца 90 — застрял на первом, «отлично». Мячик 80 меньше 90, но больше 75 — пролетел первое кольцо и застрял на втором, «хорошо». Мячик 60 меньше и 90, и 75 — пролетел оба и упал в третий, «повторить». А теперь перевернём порядок: сверху кольцо 75, ниже 90. Мячик 95 больше 75 — застрял на верхнем узком кольце, хотя должен был попасть в «отлично». Мячик 80 тоже застрял там. Мячик 60 пролетел оба и упал в третий. Крупные мячи застряли на узком кольце, а широкое внизу осталось пустым. Поэтому условия ставят от большего порога к меньшему. В коде второй уровень записывают короче: elif score >= 75. Верхнюю границу «до 89» не пишут, потому что до этой строки уже не доходят те, у кого 90 и больше: их забрал первый уровень. Python проверяет условия сверху вниз и выполняет ровно одну ветку — первую, где условие дало True. После этого он не проверяет остальные условия: ветка уже выбрана, и программа пошла выполнять её. Та же логика — в магазине с накопительной скидкой: чем больше сумма заказа, тем выше процент. Разберём её ниже. else необязателен: если он не нужен, можно оставить только if. elif тоже необязателен. Имена переменных берут из английского и пишут латиницей: promo — промокод price — цена count — количество discount — скидка total — итого, сумма без скидки saved — сколько сэкономили sale — к оплате Имя ничего не считает — оно объясняет человеку, что лежит внутри.