ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Цикл for и range в Python: повторить известное число раз

Автор: · Обновлено

Цикл for по range перебирает заранее построенную последовательность целых чисел. Правая граница range не включается: range(2, 6) даёт 2, 3, 4, 5. Третий аргумент задаёт шаг и может быть отрицательным.

Три формы range

for number in range(1, 6):
    print(number, number ** 2)

Результат:

1 1
2 4
3 9
4 16
5 25

range(5) начинает с нуля и заканчивает на четырёх. range(1, 6) явно задаёт начало и невключённый конец. range(10, 3, -2) выдаст 10, 8, 6, 4; при отрицательном шаге начальное значение должно быть больше конечного.

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

Чтобы перебрать числа от 1 до n включительно, нужна правая граница n + 1. Новички часто пишут range(1, n) и теряют последнее число. Лучшая проверка — выписать фактические значения для маленького n, а не пытаться запомнить правило абстрактно.

Не меняйте переменную цикла в надежде управлять range: на следующей итерации for присвоит ей очередное значение последовательности. Если индекс не используется, принято имя underscore, но для учебной трассировки осмысленное имя полезнее.

Таблица кратных чисел

Прочитайте n и выведите числа от 1 до n вместе с их тройными значениями. Для n = 4 ожидаются пары 1–3, 2–6, 3–9, 4–12. Затем выведите все чётные числа от 2 до n через range с шагом 2. Проверьте n = 1 и n = 2: эти границы сразу обнаруживают потерянный последний элемент.

Диапазон до запуска

Для выражений range(5), range(2, 7), range(8, 2, -2) и range(2, 8, -2) выпишите последовательности вручную. Последний диапазон окажется пустым: шаг удаляет значение от невключённой границы. Подтвердите результат через list только после прогноза. Затем напишите функцию, которая печатает обратный отсчёт от n до 1, и проверьте n = 1 и n = 0. Сопоставьте каждый аргумент range с началом, стопом и шагом. Это упражнение устраняет ошибки границ до того, как они спрячутся внутри большого цикла.

Практикум: границы range на арифметической прогрессии

Выведите числа 3, 6, 9, 12 и 15 через range, затем их индексы от 1 до 5. Для аргументов start, stop, step заранее запишите первое включённое и первое исключённое значение. Проверьте пустой диапазон и движение с отрицательным шагом от 5 до 1. Посчитайте сумму прогрессии циклом и сравните с ручным результатом. Не исправляйте пропущенную границу случайным +1: объясните, почему именно это значение делает конец достижимым.

Контрольная точка

Что выдадут range(1, 5), range(5, 1) и range(5, 1, -1)? Ответьте через направление шага и исключённую правую границу.

Частые вопросы

Почему последнее значение range не включается?

Полуоткрытый интервал удобно сочетать с длиной последовательности и индексами от 0 до len - 1. При этом число шагов и соседние диапазоны рассчитываются без двойного включения границы.

Источники