Что тренируют задачи на циклы
Задачи на циклы тренируют 3 навыка: увидеть повторяющееся действие, выбрать подходящий цикл и правильно подготовить переменные до его начала. Почти все ошибки новичков связаны с третьим пунктом.
Возьмём сумму чисел от 1 до 100. Человек видит формулу или складывает по порядку, а программист замечает шаблон: «прибавить следующее число к сумме» — и это действие повторяется. Остаётся решить, сколько раз его выполнить, с какого числа начать и где хранить промежуточный результат. Такой взгляд на задачу и есть главное умение, которое дают упражнения с повторениями. Синтаксис for и while запоминается за один урок, а привычка видеть шаблон вырабатывается десятками задач.
Набор устроен лесенкой. Первые три упражнения — классический цикл for с накопителем: сумма квадратов, таблица умножения, факториал. Дальше идёт цикл while, который работает с цифрами числа. Потом — вложенность и умножение строк в лесенке из звёздочек. Последние три задачи на циклы связаны с вводом: заранее известное количество чисел, ввод до нуля и степени двойки, где число шагов зависит от данных.
По федеральной образовательной программе основного общего образования циклы с условием и с переменной изучают в 8 классе[1], а в 9 классе их применяют к массивам. Значит, без уверенного цикла не обойтись ни на уроках, ни на экзамене.
for или while: какой цикл выбрать
Если число повторений известно до начала — нужен for, если повторять надо до наступления события — while. Это правило решает выбор в 9 случаях из 10.
| Задача из набора | Что известно заранее | Цикл |
| Сумма квадратов, факториал | Числа от 1 до N | for i in range(1, n + 1) |
| Таблица умножения N×N | N строк по N чисел | for внутри for |
| Сумма N чисел | Количество чисел N | for _ in range(n) |
| Сумма цифр | Ничего: цифр может быть 1 или 10 | while x > 0 |
| Ввод до нуля | Ничего: пользователь решает сам | while x != 0 |
| Степени двойки | Только верхняя граница | while p <= n |
Любой for можно переписать через while, заведя счётчик вручную. Но тогда легко забыть увеличить его, и программа зависнет. Поэтому, когда количество шагов известно, for надёжнее: он сам берёт следующее значение из range и сам останавливается. Подробно эти конструкции разобраны в статьях о цикле for и функции range и о цикле while с условием.
Разбор: накопитель для суммы и факториала
Накопитель — это переменная, которую создают до цикла и меняют на каждом шаге. Для суммы её начальное значение 0, для произведения 1: ноль не меняет сумму, единица не меняет произведение.
n = 5
result = 1
for i in range(2, n + 1):
result *= i
print(result)
120
Цикл начинается с 2, потому что умножать на 1 бессмысленно. Если ввести 0 или 1, range окажется пустым, тело не выполнится ни разу, и программа выведет 1 — как раз верный ответ: факториал нуля по определению равен единице. Это пример того, как хорошо выбранное начальное значение избавляет от лишних проверок.
Python работает с целыми числами любой длины, поэтому факториал 10 или даже 50 он посчитает без переполнения. Это отличает его от C++ и Паскаля, где для больших чисел нужны особые типы. Работу с большими значениями описывает официальная документация Python[2].
Разбор: цифры числа в цикле while
Чтобы разобрать число на цифры, нужны 2 операции: x % 10 даёт последнюю цифру, а x // 10 отрезает её. Повторяя их, пока число не станет нулём, мы переберём все цифры справа налево.
| Шаг | x до шага | x % 10 | s после шага | x // 10 |
| 1 | 1234 | 4 | 4 | 123 |
| 2 | 123 | 3 | 7 | 12 |
| 3 | 12 | 2 | 9 | 1 |
| 4 | 1 | 1 | 10 | 0 — выход |
Такая таблица называется трассировкой. Её стоит рисовать на бумаге каждый раз, когда программа выдаёт не тот ответ: обычно уже на втором шаге видно, где расчёт разошёлся с задуманным. Приём с цифрами встречается постоянно — в задачах на палиндромы, на поиск наибольшей цифры, на переворот числа. Ещё больше таких упражнений собрано в разделе задач на цифры и делители.
Разбор: звёздочки и вложенные повторы
Лесенку из звёздочек можно нарисовать двумя способами: вложенным циклом или умножением строки на число. Второй способ в Python короче на 3 строки.
n = 4
for i in range(1, n + 1):
print("*" * i)
Запись "*" * 3 даёт строку из трёх звёздочек. В других языках такой операции нет, и там пишут внутренний цикл, который печатает по одной звёздочке без перевода строки. Вложенность всё равно нужно понимать: в таблице умножения N×N без неё не обойтись. Внешний цикл отвечает за строки, внутренний — за числа в строке, и на каждый шаг внешнего внутренний проходит полностью. Для таблицы 4 на 4 тело внутреннего выполнится 16 раз.
Задачи на циклы с вводом до нуля
Если конец ввода обозначен особым значением, первое число читают до цикла, а каждое следующее — в последней строке тела. Тогда ноль не попадёт в сумму.
total = 0
x = int(input())
while x != 0:
total += x
x = int(input())
print(total)
Частая ошибка — прочитать число в начале тела и сразу прибавить. Тогда первое значение теряется, а ноль всё-таки попадает в сумму; на нуле это незаметно, но при другом стоп-сигнале ответ испортится. Второй вариант — while True с проверкой и break внутри; он тоже правильный, но новичку проще держать условие в заголовке.
Похожие задачи на циклы с вводом встречаются и на экзамене. По материалам ФИПИ задание 16 ОГЭ по информатике — это программа на универсальном языке, и Python входит в список допустимых[3]. Обработка последовательности чисел, которая заканчивается особым значением, — привычный сюжет таких программ. Не стоит заучивать готовые решения: формулировки меняются, а схема «прочитать — проверить — обработать — прочитать снова» остаётся.
Когда этот набор не поможет
Набор не поможет, если пропущены предыдущие темы или нужны совсем другие умения. Вот 4 таких случая.
- Ученик путается в if и else. Сначала решите 8 упражнений на ветвления — внутри повторов они понадобятся постоянно.
- Ребёнку 8–10 лет, и он ещё не печатает код. Идею повтора легче показать блоком «повторить 10 раз» в Scratch.
- Нужно хранить 100 введённых значений и потом к ним возвращаться. Это уже работа со списками.
- Программа должна работать 1 час без остановки. В редакторе на странице время выполнения ограничено, чтобы зависшая программа не мешала браузеру.
«Бесконечный повтор сломает компьютер». Это миф: зависшую программу можно остановить, а в редакторе на сайте её прервёт ограничение по времени. Опасности для техники нет, просто программа ничего не выведет. Что делать в такой ситуации, объясняет статья про бесконечный цикл.
«Для звёздочек обязательно нужен вложенный for». Не подтверждается: в Python строку можно умножить на число, и лесенка рисуется одним уровнем повторов.
Чего делать нельзя
Нельзя запускать программу с while, пока не ясно, какая строка меняет условие: без неё выход не наступит. Остальные правила:
- Нельзя создавать накопитель внутри тела — он будет обнуляться на каждом шаге.
- Не следует начинать произведение с нуля: результат всегда окажется 0.
- Не стоит забывать, что range не включает правую границу — для числа N пишут
range(1, n + 1). - Не допускается менять счётчик for вручную в надежде пропустить шаги: на следующем витке Python всё равно возьмёт значение из range.
- Не стоит ставить print результата с отступом, если ответ нужен один раз: он напечатается на каждом шаге.
- Нельзя смешивать табы и пробелы в теле; руководство PEP 8 рекомендует отступ в 4 пробела[4].
Когда упражнения решены, переходите к задачам на списки: там те же приёмы применяются к набору значений. И возвращайтесь к этой странице через несколько дней — повторная попытка без подсказок закрепляет навык лучше, чем перечитывание готового кода, это показало исследование Roediger и Karpicke[5].
Источники
[1] Приказ Минпросвещения России от 18.05.2023 № 370 «Об утверждении федеральной образовательной программы основного общего образования».
[2] The Python Tutorial (официальная документация Python 3). Python Software Foundation.
[3] ФИПИ. Методические рекомендации для обучающихся по организации индивидуальной подготовки к ОГЭ 2026 года. Информатика. М., 2026.
[4] van Rossum G., Warsaw B., Coghlan N. PEP 8 — Style Guide for Python Code. Python Software Foundation, 2001.
[5] Roediger H. L., Karpicke J. D. Test-enhanced learning: Taking memory tests improves long-term retention // Psychological Science. 2006. Vol. 17, № 3. P. 249–255.
Вопросы и ответы
Зачем в задаче писать for _ in range(n)?
Подчёркивание — обычное имя переменной. Так показывают, что номер шага в теле не нужен, важно только количество повторений.
Почему сумма цифр решается без перевода в строку?
Через str тоже можно, и это короче. Но приём с // и % нужен в других языках и в экзаменационных заданиях, поэтому его стоит освоить.
Как остановить зависшую программу?
В IDLE помогает сочетание Ctrl+C. В редакторе на сайте программу прервёт ограничение времени, после чего можно исправить условие и запустить снова.
Что делает break?
Он немедленно завершает ближайший повтор, и выполнение продолжается со строки после него. Обычно break ставят внутри if.
Сколько задач на циклы решать за одно занятие?
Три-четыре с пониманием лучше восьми наугад. Оставшиеся можно решить в следующий раз — распределённая практика запоминается прочнее.
Можно ли в одном решении использовать и for, и while?
Да, например внешний for перебирает числа, а внутренний while раскладывает каждое на цифры. Главное — следить за отступами.