Статья

Python: вложенные циклы

5 сентября 2026~8 минут10–11 класс

Пять минут на эту статью — и «Python: вложенные циклы» станет понятнее. Внутри: теория без воды, пример, разбор задания и чек-лист самопроверки.

Что такое вложенные циклы в Python

Когда программа должна перебрать строки и столбцы таблицы, проверить все пары чисел или нарисовать узор из символов, одного цикла обычно мало. Вложенные циклы помогают не запутаться в повторяющихся действиях: внешний цикл выбирает большую часть задачи, а внутренний выполняет работу внутри неё. В этом материале ты разберёшь логику таких конструкций, научишься читать код по шагам и увидишь, как избежать бесконечных повторений.

Вложенным называют цикл, записанный внутри тела другого цикла. При каждом новом повторе внешнего цикла внутренний цикл запускается заново и проходит весь свой диапазон. Поэтому важно следить за отступами: именно они показывают Python, какие команды относятся к циклу.

for i in range(3):
    for j in range(2):
        print(i, j)

Здесь внешний цикл выбирает значения 0, 1 и 2, а внутренний для каждого из них перебирает 0 и 1. Всего команда print выполнится 3 × 2 = 6 раз.

Если хочется сразу потренироваться на коротких задачах, можно открыть бесплатную практику в личном кабинете и проверить понимание после чтения.

Как работают два цикла

Представь расписание с тремя днями и четырьмя уроками в каждом дне. Внешний цикл перебирает дни, внутренний — уроки. Сначала Python берёт первый день и полностью проходит по четырём урокам. Только после этого он переходит ко второму дню.

for day in range(1, 4):
    for lesson in range(1, 5):
        print("День", day, "урок", lesson)

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

Количество повторений часто можно оценить заранее: если внешний цикл выполняется m раз, а внутренний n раз, команда внутри обычно сработает m × n раз. Это помогает заметить лишние вычисления ещё до запуска программы.

Совет репетитора

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

Разобранный пример: таблица умножения

Составим фрагмент таблицы умножения от 1 до 3. Внешний цикл будет выбирать множитель из первой группы, а внутренний — множитель из второй. В каждой строке появятся все произведения для одного значения внешнего цикла.

for a in range(1, 4):
    for b in range(1, 4):
        print(a, "×", b, "=", a * b)
    print()

Разберём выполнение. Сначала a равно 1. Внутренний цикл последовательно подставляет 1, 2 и 3, поэтому выводит 1 × 1, 1 × 2 и 1 × 3. Затем команда print() создаёт пустую строку. После этого a становится равным 2, и внутренний цикл снова начинается с 1, а не продолжает с прежнего значения.

Последний print() находится на уровне отступа внешнего цикла, поэтому выполняется один раз после всей внутренней серии. Если убрать отступ, таблица станет одной длинной последовательностью без разделения на строки.

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

Ожидаемый фрагмент:
\( 1 \times 1 = 1 \)
\( 1 \times 2 = 2 \)
\( 1 \times 3 = 3 \)

Вложенные циклы с условием и break

Внутри вложенного цикла можно использовать if, continue и break. Например, программа может искать первую пару чисел, произведение которых равно заданному значению. Условие проверяется после каждой пары.

\( target = 12 \)
for x in range(1, 6):
for y in range(1, 6):
\( if x * y == target: \)
print(x, y)

В этом варианте break не используется, поэтому программа найдёт все подходящие пары: 3 и 4, 4 и 3. Если добавить break во внутренний цикл, он остановит только поиск для текущего значения x. Внешний цикл продолжит работу.

Чтобы остановить оба цикла, часто используют дополнительную переменную-флаг или оформляют поиск в функцию с return. Выбор зависит от задачи: иногда нужны все совпадения, а иногда достаточно первого.

Ловушка

break прерывает ближайший цикл, внутри которого он записан. Не рассчитывай, что одна команда автоматически остановит всю вложенную конструкцию.

После этого полезно решить несколько вариантов самостоятельно: найти пары с суммой 10, пропустить одинаковые числа или остановиться после первого результата.

Типичные ошибки и проверка результата

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

Третья ошибка связана с range: правая граница не включается. Запись range(1, 4) даёт 1, 2 и 3, а не 4. Четвёртая проблема — слишком большой диапазон. Два цикла по 1000 повторов дают уже 1 000 000 проверок, и программа может работать заметно дольше.

СитуацияЧто проверить
Мало строк в результатеГраницы range и условие
Повторяются неожиданные значенияИмена переменных и порядок циклов
Программа долго работаетРазмер диапазонов и лишние вычисления
Нет выводаОтступы и выполнимость условия

Проверяй программу маленькими диапазонами: сначала 2 × 2, затем увеличивай размеры. В личном кабинете с бесплатными заданиями удобно сравнить свой результат с условием и найти место, где изменилась логика.

Что запомнить

Вложенный цикл — это цикл внутри другого цикла. Внешний цикл задаёт крупный шаг, внутренний полностью выполняется на каждом таком шаге. Поэтому порядок переменных и отступы особенно важны.

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

Помни: break останавливает ближайший цикл, continue пропускает текущий повтор, а range не включает правую границу. Эти правила пригодятся в задачах на таблицы, поиск, матрицы и узоры.

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

Зачем нужны вложенные циклы?

Они нужны, когда требуется обработать несколько уровней повторений: например, каждую строку и каждый столбец таблицы или все пары элементов.

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

Если циклы независимы, перемножь количество повторов внешнего и внутреннего циклов. Например, 3 × 4 дают 12 выполнений.

Что делает break во вложенном цикле?

Он прерывает только ближайший цикл, в теле которого записан. Для остановки внешнего цикла нужен дополнительный приём, например флаг или функция с return.

Как закрепить тему после разбора?

Реши несколько задач от простых к более сложным: выведи прямоугольник символов, создай таблицу умножения, найди пары чисел и отдельно проверь работу break и continue.

Закрепить тему на практике

Теория без практики забывается за неделю. В личном кабинете Просто Урок — задания именно по этой теме с проверкой каждого шага. Регистрация бесплатная.

Важно. Материалы сайта носят информационно-образовательный характер и не являются публичной офертой (ст. 437 ГК РФ), индивидуальной консультацией или руководством к действию. Мы аккуратно работаем с фактами, но не гарантируем полную точность и актуальность: структура и правила экзаменов могут меняться — сверяйтесь с официальными источниками (ФИПИ, действующие кодификаторы и нормативные акты РФ). Администрация сайта не несёт ответственности за возможные неточности и за решения, принятые на основе материалов. Заметили неточность — напишите нам, мы исправим.