8 упражнений на for и while: от суммы до лесенки из звёзд

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

Задачи на циклы показывают, зачем вообще нужен компьютер: он без устали повторяет действие сто или миллион раз. В тренажёре 8 упражнений на for и while с автопроверкой — сумма квадратов, факториал, сумма цифр, таблица умножения, лесенка из звёздочек и ввод до нуля, — а под ним разбор каждого приёма.

Загружаем…

Что тренируют задачи на циклы

Задачи на циклы тренируют 3 навыка: увидеть повторяющееся действие, выбрать подходящий цикл и правильно подготовить переменные до его начала. Почти все ошибки новичков связаны с третьим пунктом.

Возьмём сумму чисел от 1 до 100. Человек видит формулу или складывает по порядку, а программист замечает шаблон: «прибавить следующее число к сумме» — и это действие повторяется. Остаётся решить, сколько раз его выполнить, с какого числа начать и где хранить промежуточный результат. Такой взгляд на задачу и есть главное умение, которое дают упражнения с повторениями. Синтаксис for и while запоминается за один урок, а привычка видеть шаблон вырабатывается десятками задач.

Набор устроен лесенкой. Первые три упражнения — классический цикл for с накопителем: сумма квадратов, таблица умножения, факториал. Дальше идёт цикл while, который работает с цифрами числа. Потом — вложенность и умножение строк в лесенке из звёздочек. Последние три задачи на циклы связаны с вводом: заранее известное количество чисел, ввод до нуля и степени двойки, где число шагов зависит от данных.

По федеральной образовательной программе основного общего образования циклы с условием и с переменной изучают в 8 классе[1], а в 9 классе их применяют к массивам. Значит, без уверенного цикла не обойтись ни на уроках, ни на экзамене.

for или while: какой цикл выбрать

Если число повторений известно до начала — нужен for, если повторять надо до наступления события — while. Это правило решает выбор в 9 случаях из 10.

Задача из набораЧто известно заранееЦикл
Сумма квадратов, факториалЧисла от 1 до Nfor i in range(1, n + 1)
Таблица умножения N×NN строк по N чиселfor внутри for
Сумма N чиселКоличество чисел Nfor _ in range(n)
Сумма цифрНичего: цифр может быть 1 или 10while 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 % 10s после шагаx // 10
1123444123
21233712
312291
411100 — выход

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

Разбор: звёздочки и вложенные повторы

Лесенку из звёздочек можно нарисовать двумя способами: вложенным циклом или умножением строки на число. Второй способ в 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 раскладывает каждое на цифры. Главное — следить за отступами.