← Все вопросы

Задание 12 ОГЭ: как найти значение переменной после вложенного цикла?

Задан 8 месяцев назад870 просмотров2 ответа
9

В одном из заданий ОГЭ дали программу с вложенным циклом (цикл внутри цикла) и просят финальное значение переменной. Как трассировать вложенный цикл на Python, чтобы не запутаться в счётчиках? У меня от двух циклов сразу каша в голове.

2 ответа

11
✓ Принятый ответ — помог автору

Вложенные циклы пугают, но разбираются по простому правилу: внутренний цикл прокручивается полностью на КАЖДОМ шаге внешнего.

Пример на Python:

s = 0
for i in range(1, 4):       # i = 1, 2, 3
    for j in range(1, 4):   # j = 1, 2, 3
        s = s + 1
print(s)

Внешний цикл идёт 3 раза, и на каждом внутренний делает 3 шага. Значит тело s = s + 1 выполнится 3 × 3 = 9 раз, ответ — 9.

Если внутри есть условие — считайте аккуратнее. Трассируйте таблицей: столбцы i, j и переменная-накопитель.

s = 0
for i in range(1, 4):
    for j in range(1, 4):
        if i + j == 4:
            s = s + 1
print(s)

Пары (i, j), где i+j=4: (1,3), (2,2), (3,1) → s = 3.

Алгоритм трассировки:

  1. Зафиксируйте i = первое значение.
  2. Прокрутите j по всему диапазону, обновляя переменную.
  3. Возьмите следующее i и снова прокрутите весь внутренний цикл.
  4. Считайте до конца внешнего цикла.

Частая ошибка: считают, что внутренний цикл идёт один раз на всю программу. Нет — он перезапускается на каждом значении внешнего. И помните про range: правая граница не входит.

4

Если в уме сложно — оцените сначала число повторений тела (произведение длин циклов), это часто и есть ответ при простом s = s + 1.

Для внешнего цикла длиной A и внутреннего длиной B тело выполнится A × B раз. Если есть условие внутри — из этого числа надо вычесть/отобрать только подходящие пары. Перебор пар (i, j) удобно выписать списком — так нагляднее, чем держать два счётчика в голове.

Ваш ответ

Войдите, чтобы ответить на вопрос.