Что проверяют задачи на условия
Задачи на условия проверяют 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 вида тестов: обычный случай, граничное значение и особый случай вроде нуля или одинаковых чисел.
- Обычный случай. Для оценок — 64 балла, для треугольника — стороны 3, 4, 5.
- Граница. Ровно 85, ровно 70, рост ровно 120. Здесь проверяется, где нужен знак
>=, а где>. - Особый случай. Ноль для чётности, три равных числа для максимума, стороны 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 нет?
Ничего: блок просто пропускается, и выполнение продолжается со следующей строки без отступа.
Где ещё встречаются ветвления в школьной информатике?
В заданиях для исполнителей вроде Робота, в блок-схемах с ромбом проверки и в задачах на анализ программ. Идея везде одна: проверка и два пути.