Теория
Что именно создаёт range
Цикл for последовательно получает значения из готовой последовательности. Для числового перебора такую последовательность часто создаёт range: левая граница входит, правая не входит, а необязательный третий аргумент задаёт шаг.
Запись range(2, 8, 2) даёт 2, 4 и 6. Число 8 служит стоп-границей и не становится значением переменной цикла.
for number in range(2, 8, 2): print(number)Как читать цикл по итерациям
Перед трассировкой выпишите значения range. Затем для каждого значения отдельно выполните тело цикла и зафиксируйте изменение результата. Это превращает цикл в понятную таблицу повторяющихся шагов.
Накопитель создаётся до цикла. Если создать его внутри тела, предыдущее значение будет теряться на каждой итерации.
- При первом значении 1 сумма становится равной 1.
- При втором значении 2 сумма становится равной 3.
- При третьем значении 3 сумма становится равной 6; следующего значения в range нет.
Правая граница не включается
Частая ошибка — ожидать, что range(1, 5) содержит число 5. На самом деле перебор остановится перед ним. Если задача требует значения от 1 до 5 включительно, стоп-границей должно быть 6.
Как проверить границы цикла
До запуска ответьте на три вопроса: какое значение будет первым, какое последним и сколько значений получится. После этого проверьте первую и последнюю итерации отдельно.
- Раскройте range. Запишите несколько значений последовательности вручную.
- Назовите первую итерацию. Подставьте первое значение в тело цикла.
- Назовите последнюю итерацию. Убедитесь, что она ещё находится до стоп-границы.
- Сверьте количество. При необходимости используйте len(range(...)) в локальной проверке.
Практика
Перечислите значения range
Последовательность начинается с 2 и растёт на 2: 2, 4, 6. Следующее число 8 уже за правой границей.
Проследите накопление суммы
Накопитель последовательно получает 0 + 1 = 1, затем 3, затем 6.
Посчитайте итерации
Цикл получает пять значений: 0, 1, 2, 3 и 4. Поэтому тело выполняется пять раз.
Включите правую границу
Чтобы последним значением стало 5, правую границу нужно поставить на единицу дальше: `range(1, 6)`.
Запустите короткий цикл
Прибавления равны 0, 2 и 4. Итоговый результат: 6.
Итог
Теперь вы можете заранее перечислить значения range и проследить, как for меняет состояние программы на каждой итерации.
Составьте цикл для чисел от 5 до 25 с шагом 5, сначала предскажите вывод на бумаге, затем сравните его с локальным запуском.
Прогресс
0 / 5Вы ещё не решали задания