Глава 10 · Немного автоматизации!

Условия if внутри циклов for

Циклы и условия отлично работают вместе — а циклы можно вкладывать друг в друга.

Условия if внутри циклов for

if из главы 9 прекрасно работает внутри цикла — на каждом шаге можно принимать своё решение:

if_v_cikle.py
for number in range(1, 11):
    if number % 2 == 0:
        print(number, "— чётное")

Вложенные циклы for

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

vlozhennye_cikly.py
for row in range(3):
    for col in range(4):
        print(f"({row}, {col})", end=" ")
    print()  # новая строка после каждого ряда
внутренний цикл — col (0..3) →внешний цикл — row (0..2) ↓
Внешний цикл — 3 строки, внутренний — 4 столбца в каждой: 3 × 4 = 12 ячеек

Сколько раз выполнится внутренний цикл?

строк×столбцов=итераций тела
Формула числа итераций вложенного цикла
rowcolprint(...) сработал раз №
001
012
023
034
105
2312
Вложенные циклы — частая причина неожиданной медлительности
Внешний цикл выполняется 3 раза, внутренний — 4 раза на каждом шаге внешнего — итого print(...) внутри сработает 3 * 4 = 12 раз. Если оба цикла идут не до 3-4, а до тысяч, итоговое число итераций перемножается — и программа может выполняться заметно дольше, чем кажется на первый взгляд.

Мини-проект: таблица умножения

Классическая задача на вложенные циклы — напечатать таблицу умножения от 1 до 5:

tablica_umnozheniya.py
for a in range(1, 6):
    for b in range(1, 6):
        print(a * b, end="\t")
    print()
Один или два примера — этого достаточно
Специально не будем множить примеры узоров на вложенных циклах — таблица умножения (и сетка выше) дают достаточно интуиции, чтобы читать и писать любые похожие конструкции самостоятельно.

Цикл + строка + условие

Вложенность работает и там, где внутренний «цикл» — это перебор символов строки внутри внешнего перебора списка слов:

cikl_stroka_uslovie.py
slova = ["python", "код", "цикл"]

for slovo in slova:
    bukvy_o = 0
    for letter in slovo:
        if letter == "о":
            bukvy_o += 1
    print(slovo, "—", bukvy_o)
Практика: условия и вложенные циклы
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →
Практика: мини-проект «Таблица умножения»
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →
Практика: сколько итераций во вложенном цикле?
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →