Представьте часы: пока минутная стрелка делает один полный круг, секундная успевает обежать циферблат 60 раз. Это и есть вложенные циклыКонструкция, повторяющая блок кода: for перебирает элементы, while — пока условие истинно. — один цикл (внешний) на каждом своём шаге целиком прокручивает другой цикл (внутренний).
Внешний цикл — «медленная стрелка», внутренний — «быстрая». Если внешний делает 3 шага, а внутренний на каждом из них — 4, то тело внутреннего выполнится 3 × 4 = 12 раз.
▶ nested.py
Следите за порядком: при i = 0 внутренний цикл полностью пробегает j = 0, 1, 2, 3, и только потом i становится 1. Внутренний цикл «вложен» в тело внешнего, поэтому подчиняется ему целиком.
💡Совет
Главное правило отступов: внутренний цикл и его тело сдвинуты ещё на 4 пробела вправо относительно внешнего. Уровень отступа показывает «глубину вложенности». Перепутаете отступ — перепутаете, что к какому циклу относится.
Таблица умножения — классика
Вложенные циклы идеальны для таблиц: внешний цикл задаёт строкуТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str)., внутренний — столбец. Соберём таблицу умножения, печатая строку без перевода каретки с помощью параметра end.
▶ multiplication.py
Параметр end="\t" говорит print заканчивать вывод табуляцией вместо переноса строки, поэтому числа выстраиваются в ряд. Пустой print() после внутреннего цикла переводит вывод на новую строку — начинается следующий «ряд» таблицы.
💡Совет
Предскажите вывод. Сколько строк * напечатает код ниже и сколько звёздочек будет в последней строке? Запустите и проверьте догадку.
▶ predict-triangle.py
Получится «лесенка» из 1, 2, 3, 4 звёздочек: внутренний цикл зависит от i — на каждой следующей строке звёздочек на одну больше. Это типичный приём «треугольник из символов».
⚠️ Частые ошибки новичков
Ошибка. Поставить print() с неправильным отступом — внутри внутреннего цикла вместо снаружи. Тогда перенос строки случится после каждой звёздочки, и «треугольник» развалится в столбик. Запустите код и почините: сдвиньте последний print() влево, чтобы он относился к внешнему циклу.
▶ broken-nested.py
Заданиерешение.py
С помощью вложенных циклов посчитайте, сколько всего пар (i, j) переберётся, если внешний цикл идёт по range(5), а внутренний по range(3). Сохраните число в переменную pairs.
Заданиерешение.py
Дан список слов words = ["кот", "ум", "дом"]. С помощью вложенных циклов соберите в переменную letters строку из всех букв подряд (получится "котумдом").
❓Проверь себя
Сколько раз выполнится тело внутреннего цикла: внешний range(4), внутренний range(5)?
Что определяет уровень отступа у вложенного цикла?
Где должен стоять print() для переноса строки после каждого ряда таблицы?
ℹ️Важно
✅ Что вы узнали
Вложенный цикл — цикл внутри тела другого цикла.
Тело внутреннего цикла выполняется (внешний × внутренний) раз.
Уровень отступа задаёт глубину вложенности.
print(..., end="") печатает без переноса строки.
Вложенные циклы рисуют таблицы и фигуры из символов.
Комментарии
Загрузка…
Загрузка комментариев…