v1.0.0

Python с нуля для ЕГЭ · for и range: повторяем известное число раз

Урок курсаPython 35 задачБесплатно

for и range: повторяем известное число раз

Разберём, какие числа создаёт range и как for последовательно обрабатывает каждое из них.

Теория

Что именно создаёт range

Цикл for последовательно получает значения из готовой последовательности. Для числового перебора такую последовательность часто создаёт range: левая граница входит, правая не входит, а необязательный третий аргумент задаёт шаг.

Запись range(2, 8, 2) даёт 2, 4 и 6. Число 8 служит стоп-границей и не становится значением переменной цикла.

for number in range(2, 8, 2):    print(number)

Как читать цикл по итерациям

Перед трассировкой выпишите значения range. Затем для каждого значения отдельно выполните тело цикла и зафиксируйте изменение результата. Это превращает цикл в понятную таблицу повторяющихся шагов.

Накопитель создаётся до цикла. Если создать его внутри тела, предыдущее значение будет теряться на каждой итерации.

Разберём на примере
Сумма первых трёх чисел
Накопитель равен нулю, а цикл перебирает range(1, 4).
  1. При первом значении 1 сумма становится равной 1.
  2. При втором значении 2 сумма становится равной 3.
  3. При третьем значении 3 сумма становится равной 6; следующего значения в range нет.
Проверьте себя
Какие значения создаёт range(3, 8, 2)?
3, 5 и 7. Следующее значение 9 уже пересекает стоп-границу 8.

Правая граница не включается

Частая ошибка — ожидать, что range(1, 5) содержит число 5. На самом деле перебор остановится перед ним. Если задача требует значения от 1 до 5 включительно, стоп-границей должно быть 6.

Как проверить границы цикла

До запуска ответьте на три вопроса: какое значение будет первым, какое последним и сколько значений получится. После этого проверьте первую и последнюю итерации отдельно.

Как действовать
Четыре шага проверки
  1. Раскройте range. Запишите несколько значений последовательности вручную.
  2. Назовите первую итерацию. Подставьте первое значение в тело цикла.
  3. Назовите последнюю итерацию. Убедитесь, что она ещё находится до стоп-границы.
  4. Сверьте количество. При необходимости используйте len(range(...)) в локальной проверке.

Практика

Перечислите значения range

Какие числа по порядку получит i в цикле for i in range(2, 7, 2)? Запишите через пробел.

Подсказка
Правая граница 7 не включается.
Решение

Последовательность начинается с 2 и растёт на 2: 2, 4, 6. Следующее число 8 уже за правой границей.

Проследите накопление суммы

Чему равна total после total = 0 и цикла for x in range(1, 4): total += x?

Подсказка
`range(1, 4)` создаёт 1, 2 и 3.
Решение

Накопитель последовательно получает 0 + 1 = 1, затем 3, затем 6.

Посчитайте итерации

Сколько раз выполнится тело цикла for i in range(5)?

Подсказка
`range(5)` содержит значения от 0 до 4.
Решение

Цикл получает пять значений: 0, 1, 2, 3 и 4. Поэтому тело выполняется пять раз.

Включите правую границу

Какой range переберёт целые числа от 1 до 5 включительно?

Подсказка
Правая граница `range` не входит в последовательность.
Решение

Чтобы последним значением стало 5, правую границу нужно поставить на единицу дальше: `range(1, 6)`.

Запустите короткий цикл

Запустите: result = 0; затем для i из range(3) прибавляйте i * 2. Какое число получится?

Подсказка
Значения i равны 0, 1 и 2.
Решение

Прибавления равны 0, 2 и 4. Итоговый результат: 6.

Итог

Теперь вы можете заранее перечислить значения range и проследить, как for меняет состояние программы на каждой итерации.

Составьте цикл для чисел от 5 до 25 с шагом 5, сначала предскажите вывод на бумаге, затем сравните его с локальным запуском.

Прогресс

0 / 5
x

Вы ещё не решали задания