Ветвления if, elif, else: чётность, високосный год, треугольник

Практикумобновлено 07.10.20269 мин чтенияесть тренажёр

Задачи на условия учат программу выбирать: если число чётное — сделать одно, иначе — другое. Здесь 8 упражнений с автопроверкой на if, elif и else: чётность, знак числа, максимум из трёх, високосный год, оценки по баллам и треугольник. После тренажёра — разбор трёх самых коварных задач.

Загружаем…

Что проверяют задачи на условия

Задачи на условия проверяют 2 умения: записать проверку на языке Python и правильно расставить ветки так, чтобы для любого ввода сработала ровно одна из них. Второе обычно сложнее первого.

Записать if x > 0: несложно. Труднее не забыть случай, о котором автор не подумал: ноль, два одинаковых числа, отрицательные значения. Поэтому в каждом упражнении тренажёра есть тесты на такие «края», и именно на них решения падают чаще всего. Умение заранее спросить себя «а что будет, если ввести 0?» пригодится программисту гораздо больше, чем знание синтаксиса.

Задачи на условия в наборе идут от простого к сложному. Первые два упражнения требуют простого условия: одно сравнение и две или три ветки. Затем появляется условие, которое меняет переменную, — максимум из трёх. Дальше идут составные условия, где несколько проверок соединены словами and и or: високосный год, треугольник, горка в аквапарке. Отдельно стоит цепочка условий с порогами в задаче про оценки. Если какое-то упражнение не получается, вернитесь на шаг назад: обычно мешает не новое условие, а непонятое предыдущее. В официальной документации Python конструкция if описана первой в главе об управлении ходом программы[1], и это логично: без условий программа умеет только выполнять команды подряд.

Ветвления — одно из базовых понятий вычислительного мышления наравне с последовательностями и циклами: так их описывают Brennan и Resnick в работе об оценке этих навыков[2]. В школьной программе тема тоже обязательная: по федеральной образовательной программе основного общего образования ветвления и составные условия изучают в 8 классе вместе с логическими операциями «и», «или», «не»[3].

Памятка: if, elif, else и знаки сравнения

Конструкция ветвления в Python — это слово if, условие, двоеточие и блок с отступом в 4 пробела. Ветки elif проверяются по очереди, а else срабатывает, когда не подошла ни одна.

ЗаписьСмыслПример из набора
==равноx % 2 == 0 — число чётное
!=не равноyear % 100 != 0
>, <больше, меньшеx > 0 — положительное
>=, <=не меньше, не большеheight >= 120
andоба условия вернытреугольник, горка
orверно хотя бы одновисокосный год
notотрицаниеnot x > 0

Самое важное в таблице — разница между = и ==. Одиночный знак кладёт значение в переменную, двойной сравнивает. Если написать if x = 5:, Python остановится с SyntaxError ещё до запуска. Вторая важная вещь — отступ: всё, что относится к ветке, сдвигается на 4 пробела, как советует PEP 8[4]. Строка без отступа после ветки выполнится в любом случае.

Разбор: максимум из трёх чисел

Максимум из трёх — классическая задача, в которой длинное решение со всеми сравнениями легко сделать с ошибкой, а короткое решение с «чемпионом» почти невозможно сломать.

Первая идея новичка — проверить, что a больше b и больше c, потом то же для b, и в конце для c. Это работает, но условий много, и легко перепутать букву. Кроме того, для ввода 7, 7, 2 строгие знаки «больше» не выберут ни одно число, и программа ничего не выведет. Надёжнее приём, который использует только простые условия:

a, b, c = 3, 9, 4
big = a
if b > big:
    big = b
if c > big:
    big = c
print(big)

Переменная big хранит лучшего на данный момент. Каждое следующее число сравнивается с ним, и если оно больше — становится новым «чемпионом». Здесь нужны два отдельных if, а не elif: проверить надо оба числа. Тот же приём потом пригодится для поиска максимума в списке из тысячи элементов, только сравнения окажутся внутри цикла. В настоящих программах пишут max(a, b, c), но в задаче функция запрещена специально, чтобы потренировать ветвления.

Разбор: високосный год и составное условие

Если в задаче несколько требований, их соединяют словами and и or, а скобки показывают, что проверять вместе. Високосный год — лучший пример: правило состоит из 3 частей.

ГодДелится на 4Делится на 100Делится на 400Ответ
2023нетнетнетнет
2024данетнетда
1900даданетнет
2000дададада

Запись (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 читается так: «делится на 4 и не делится на 100, либо делится на 400». В Python and выполняется раньше or, поэтому скобки здесь формально не обязательны, но с ними условие понятнее. Таблица выше — хорошая проверка: прогоните по ней своё решение в уме до того, как нажимать кнопку. Как строить такие таблицы для любых выражений, объясняет статья про логические операции И, ИЛИ, НЕ.

Разбор: оценки и порядок веток elif

Если пороги проверять сверху вниз, каждой ветке elif хватает одного сравнения: до неё дойдут только значения, которые не прошли предыдущие проверки.

points = 72
if points >= 85:
    print(5)
elif points >= 70:
    print(4)
elif points >= 50:
    print(3)
else:
    print(2)

Для 72 баллов первая проверка ложна, вторая истинна, и программа выводит 4; остальные ветки даже не проверяются. А если переставить порядок и начать с points >= 50, то 90 баллов получат тройку: первая же подходящая ветка забирает управление. Вторая частая ошибка — заменить elif на несколько if. Тогда для 90 баллов сработают три ветки подряд, и программа напечатает три оценки. В задаче про координатную четверть порядок не так важен, потому что условия не пересекаются, но и там цепочка elif короче и надёжнее.

Как придумать тесты к задачам на условия

Чтобы найти ошибку до кнопки «Проверить», подберите к каждой задаче 3 вида тестов: обычный случай, граничное значение и особый случай вроде нуля или одинаковых чисел.

  1. Обычный случай. Для оценок — 64 балла, для треугольника — стороны 3, 4, 5.
  2. Граница. Ровно 85, ровно 70, рост ровно 120. Здесь проверяется, где нужен знак >=, а где >.
  3. Особый случай. Ноль для чётности, три равных числа для максимума, стороны 1, 2, 3 для треугольника — такой «треугольник» сплющен в отрезок.

Такая привычка нужна и на экзамене. По материалам ФИПИ в ОГЭ по информатике задание 16 — это программа на универсальном языке, и Python входит в список разрешённых[5]. Там тоже никто не подскажет, на каком вводе программа ошибается.

Когда этот тренажёр не поможет

Задачи на условия не помогут, если ученик ещё не уверен в базовых вещах или, наоборот, давно их перерос. Вот 4 таких случая.

  • Ввод через int(input()) пока вызывает вопросы. Сначала решите 8 упражнений на переменные и ввод.
  • Ребёнку 8–9 лет, и он не набирал код. Идею «если — то» проще показать блоками в статье про условия в Scratch.
  • Нужно повторять проверку 10 раз подряд. Это уже работа для циклов, одними проверками её не решить.
  • Все 8 упражнений проходят с первой попытки. Берите задачи с вложенными условиями и вводом нескольких значений.

«Ветку else писать обязательно». Это миф: if может стоять один. Else нужен, только если в «противном случае» что-то должно произойти.

«Условие 1 < x < 10 в Python не работает, надо писать через and». Не подтверждается: Python поддерживает цепочки сравнений, и такая запись означает то же, что 1 < x and x < 10.

Чего делать нельзя

Нельзя проверять программу одним тестом и считать её готовой: у программы с if несколько путей, и каждый нужно пройти хотя бы раз. Ещё шесть правил:

  • Нельзя ставить один знак = в условии — это присваивание, Python сообщит о синтаксической ошибке.
  • Не следует забывать двоеточие после if, elif и else.
  • Не стоит заменять elif несколькими if, если ветки исключают друг друга: сработает больше одной.
  • Не стоит сравнивать строку из input с числом: '5' == 5 всегда ложно, сначала нужен int.
  • Нельзя смешивать табы и пробелы в отступах веток — получится ошибка отступа.
  • Не следует писать if x == 1 or 2: такое условие всегда истинно, правильно x == 1 or x == 2.

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

Источники

[1] The Python Tutorial (официальная документация Python 3). Python Software Foundation.

[2] Brennan K., Resnick M. New frameworks for studying and assessing the development of computational thinking // Proceedings of the 2012 Annual Meeting of the American Educational Research Association. Vancouver, 2012.

[3] Приказ Минпросвещения России от 18.05.2023 № 370 «Об утверждении федеральной образовательной программы основного общего образования».

[4] van Rossum G., Warsaw B., Coghlan N. PEP 8 — Style Guide for Python Code. Python Software Foundation, 2001.

[5] ФИПИ. Методические рекомендации для обучающихся по организации индивидуальной подготовки к ОГЭ 2026 года. Информатика. М., 2026.

Вопросы и ответы

Сколько веток elif можно написать?

Сколько угодно. Но если их больше пяти-шести, стоит подумать, нельзя ли заменить цепочку словарём или формулой.

Почему 0 считается чётным?

Ноль делится на 2 без остатка: 0 % 2 даёт 0. Это верно и в математике, и в Python.

Можно ли вкладывать if внутрь if?

Можно, отступ тогда увеличивается ещё на 4 пробела. Но часто вложенность заменяют одним составным выражением через and — так читать легче.

Как сравнивать слова?

Так же, через ==. Учтите, что «Да» и «да» — разные строки; привести ответ пользователя к одному виду помогает метод lower().

Что выведет программа, если ни одна ветка не подошла и else нет?

Ничего: блок просто пропускается, и выполнение продолжается со следующей строки без отступа.

Где ещё встречаются ветвления в школьной информатике?

В заданиях для исполнителей вроде Робота, в блок-схемах с ромбом проверки и в задачах на анализ программ. Идея везде одна: проверка и два пути.