← К занятиям ДУП.03
1-ИИ9-3 без пароля ДУП.03 Практическое занятие №24 2×45 мин Размещено: 07.10.2026

Циклы со счётчиком for и функция range

Если число повторов известно заранее, его не копируют руками и не крутят while со счётчиком. Функция range строит ленту целых чисел, а for берёт их по одному и каждый раз выполняет тело. Ниже — три формы вызова, тренажёр границы и разбор, где одного аргумента уже мало.

Один проход по ленте range(4) range готовит 0, 1, 2, 3 for кладёт число в переменную тело печать, сумма, квадрат 0 1 2 3 4 не входит 4 шага, не 5
range — строит ленту граница — в ленту не входит тело — действие на каждом числе
Заполнение: 0%линейка ×3, прогон, 8 фрагментов, 6 дописок, 4 кейса, тест

1 Когда повторов заранее известно сколько ~5 мин

Цикл while с прошлого занятия ждёт условие: пароль верный, пользователь написал «стоп», счётчик кто-то увеличил руками. Цикл for устроен иначе: лента чисел уже готова, и тело выполняется ровно по одному разу на каждое число.

Слова на этой странице

  • for — цикл «для каждого». Берёт следующий элемент ленты и выполняет тело.
  • range — функция ленты целых чисел. Сама ничего не печатает, только отдаёт числа циклу.
  • итерация — один проход тела. Три числа в ленте — три итерации.
  • счётчик — переменная цикла. В for i in range(...) имя i по очереди равно числам ленты.
  • шаг — на сколько прыгает следующее число. Если шаг не написан, он равен +1.
  • граница — число, на котором лента останавливается. Само это число в ленту не попадает.
  • ошибка на единицу — в ленте на одно число больше или меньше, чем задумали. Чаще всего перепутали границу.

2 Из чего состоит проход ~15 мин

Руками тот же повтор выглядел бы так: напечатать 0, напечатать 1, напечатать 2, напечатать 3. Цикл оставляет действие в одном месте и подставляет очередное число.

1. Лента range готовит числа заранее 2. Счётчик for кладёт число в переменную i 3. Тело строки с отступом выполняются сейчас 4. Дальше есть ещё число — снова шаг 2
Когда чисел больше нет, тело не выполняется. Строка после цикла идёт один раз

Лента

range не печатает. Он только перечисляет целые. Дробных и строк в этой ленте нет.

Счётчик

Имя слева от in можно выбрать любое: i, n, day. Если число не нужно, пишут _.

Тело

Команды с отступом под for. Прибавлять счётчик руками, как в while, не надо: лента сама сдвигается.

for i in range(4):
    print(i)
print("после цикла")

Четыре итерации печатают 0, 1, 2 и 3. Число 4 — граница, его нет. Строка «после цикла» выполняется один раз, уже без отступа.

whilefor и range
Когда удобенконец заранее неизвестен: слово «стоп», верный парольчисло шагов или последовательность известны до запуска
Кто двигает счётчиквы, строкой в телесам range, на каждом шаге
Пустой проходусловие сразу ложно — тело ни разулента пустая — тело ни разу, это не ошибка
Шаг 0 запрещён. Число не сдвинулось бы с места, и лента не кончилась бы. range(0, 5, 0) падает с ошибкой, а не «печатает нули».

3 Три формы вызова ~12 мин

Аргументов может быть один, два или три. Во всех формах последнее «останавливающее» число в ленту не входит. Переключайте схемы: это одна и та же функция, меняется только, откуда, докуда и каким прыжком идти.

range(5) — старт сам равен 0, шаг равен 1 0 1 2 3 4 5 граница Пять клеток с числами. Если само число не нужно, счётчик называют _: for _ in range(5) Так повторяют действие ровно n раз
Один аргумент — это граница. Ноль входит, пятёрка нет
range(2, 6) — старт входит, граница нет 0 1 2 3 4 5 6 не входит 0 и 1 до старта: их нет на ленте Чтобы вошло последнее нужное число, границу ставят на единицу дальше него
Старт входит в ленту, граница — нет. Подберите границу сами в заданиях ниже
range(10, 4, -2) — шаг отрицательный, идём вниз 10 8 6 4 граница, не входит −2 −2 −2 Обратный ход: отрицательный шаг. Граница по-прежнему не берётся — подберите её сами. Если шаг +1, а старт уже больше границы — лента пустая, тело не выполнится.
Шаг говорит, в какую сторону и насколько прыгать. Граница по-прежнему не берётся
Пустая лента — не сбой. range(4, 4) и range(0) не выполняют тело ни разу. Код после цикла всё равно выполняется.

4 Куда относится фрагмент тренажёр

Нажмите плашку, затем колонку. Здесь ошибка видна сразу. В зачётном тесте ниже правильный ответ не показывается.

Счётчик for / range

лента чисел известна, тело выполнится

Условие while

конец зависит от условия, не от готовой ленты

Пустой range

тело не выполнится ни разу

Осталось разложить: 8

5 Линейка range ~15 мин

Подставьте три числа и посмотрите, какие клетки загораются. Серая пунктирная клетка — граница: цикл до неё доходит взглядом и не берёт. Если лента пустая или шаг нулевой, линейка объяснит почему, а не «напечатает что-нибудь».

for n in range(5):

Нажмите «Показать ленту». По умолчанию в полях стоят старт 0, граница 5, шаг 1 — проверьте ленту сами.

Три прогона линейки

Для каждого набора параметров нажмите «Показать ленту» и опишите результат своими словами: какие числа взялись, что с серой клеткой, пустая ли лента.

6 Пошаговый прогон ~15 мин

Прогоните фрагмент кнопками. Смотрите, какие клетки активны и как меняется сумма. Ответы пишите своими словами — текст с экрана не копируйте.

s = 0
for i in range(1, 6, 2):
    s = s + i
print(s)

Нажмите «Следующий шаг».

7 Сопоставление ~10 мин

К каждой формулировке выберите верное продолжение.

Что выдаёт range(5)?
Число-граница в range…
Число повторов известно до запуска. Удобнее…
Ждём, пока пользователь напишет «стоп». Удобнее…
range(6, 2) при шаге +1 — это…
Переменная i в for i in range(...)…
Нужно повторить действие ровно 20 раз, само число не важно. Пишут…
range(3, 12, 3) даёт…

8 Что выведет цикл ~18 мин

Не запускайте фрагменты. Прогоните их на бумаге. Числа пишите подряд через пробел, без запятых. Слова оставляйте как есть. Если печатается несколько строк — пишите их через пробел в одной строке ответа.

Фрагмент 1

for i in range(3):
    print(i)

Фрагмент 2

s = 0
for i in range(1, 5):
    s = s + i
print(s)

Фрагмент 3

for i in range(8, 3, -2):
    print(i)
print("конец")

Фрагмент 4

for i in range(1, 8, 3):
    print(i)

Фрагмент 5

for i in range(4, 4):
    print(i)
print("пусто")

Фрагмент 6

for i in range(0, 10, 4):
    print(i)
print(i)

Фрагмент 7

total = 0
for n in range(3, 12, 3):
    total = total + n
    print(n)
print(total)

Фрагмент 8

for k in range(2, -1, -1):
    print(k)
print("стоп")

9 Дописать вызов range ~15 мин

В ответ впишите вызов целиком (range(...)). Не переписывайте print и остальной код.

A. Числа от 1 до 7 включительно

for n in ____:
    print(n)

B. Ровно двенадцать повторов, само число не нужно

for _ in ____:
    print("шаг")

C. Чётный обратный отсчёт: 10 8 6 4 2

for n in ____:
    print(n)

D. Ошибка на единицу

Хотели напечатать 1 2 3 4 5 6 7, а написали range(1, 7). Что именно не вошло и какой вызов нужен вместо этого? Ответ — двумя-тремя предложениями плюс верный вызов.

E. Только одно число — ноль

for n in ____:
    print(n)

Лента должна содержать ровно одно число: 0. Подберите вызов.

F. Заведомо пустая лента

for n in ____:
    print("не должно появиться")
print("после")

Подберите вызов с двумя аргументами и шагом по умолчанию (+1), при котором тело не выполнится ни разу, а строка «после» напечатается. Кратко поясните, почему лента пустая.

10 Кейсы в эмуляторе ~30 мин

Эмулятор: OnlineGDB · Programiz · online-python-compiler.ru. Язык — Python 3. В отчёт — код, вывод консоли и короткое пояснение. Цикл — for, лента — range. Проверку «если чётное» / «если нечётное» в теле не используйте: нужный набор чисел задайте шагом.

Кейс A. Табло этажей

Лифт объявляет этажи от 1 до N включительно: на каждой итерации печатается строка вида этаж X, где X — номер этажа. После цикла, уже без отступа, один раз печатается готово. Пользователь вводит N. Сделайте два прогона и вставьте оба вывода: N = 3 и N = 1. В пояснении напишите, почему граница в range не равна N.

Кейс B. Сумма и количество нечётных

Пользователь вводит целое N. Нужны нечётные числа от 1 до N включительно — через шаг, без проверки «если нечётное». Напечатайте две строки: сначала сумму этих чисел, затем сколько чисел вошло в сумму. Два прогона: N = 9 и N = 2. В пояснении сравните, что происходит, когда N чётное и когда нечётное.

Кейс C. Обратный отсчёт и команда «пуск»

Пользователь вводит N. Цикл печатает N, N−1, …, 1 — каждое число с новой строки. После цикла один раз печатается слово пуск. Сделайте прогоны для N = 5 и N = 1. В пояснении укажите, какую границу и какой шаг вы выбрали и почему единица всё же печатается.

Кейс D. Таблица умножения на M

Пользователь вводит целое M. Программа печатает десять строк вида M x k = результат для k от 1 до 10 включительно. Число k должно идти из range. Прогон: M = 7. В пояснении укажите выбранный вызов range и почему последняя строка всё же содержит k = 10.

11 Короткий тест ~10 мин

Один верный вариант. Правильные ответы на странице не показываются.

1. range(4) — это числа…

2. Какого числа нет в range(1, 4)?

3. range(10, 4, -2) даёт…

4. Когда число шагов известно до запуска…

5. Нужны числа от 1 до n включительно. range(1, n)…

6. range(0, 5, 0)…

7. После цикла for i in range(3) переменная i…

8. range(5, 1, -1) даёт…

9. Тело цикла for — это…

10. range(7, 0, -2) даёт…

11. Нужны квадраты чисел 1…n. Цикл for i in range(1, n): print(i * i)…

12. print после цикла for выполняется…

12 Отчёт

Нажмите «Собрать отчёт».
Сохранено