Цикл for и функция range
Уроки курсаЦикл for и функция range
Типичная ошибка: граница stop не включается
Самая частая ошибка при работе с range() — написать stop равным последнему нужному числу, а не на единицу больше. Предположим, нужно напечатать числа от 1 до 9 включительно:
# Ошибочный вариант
for i in range(1, 9):
print(i)
# 1, 2, 3, 4, 5, 6, 7, 8 — 9 не вошло!
Число 9 не появится в выводе, потому что range() останавливается прямо перед stop. Правильный вариант:
# Правильный вариант
for i in range(1, 10):
print(i)
# 1, 2, 3, 4, 5, 6, 7, 8, 9
Правило простое: stop = последнее нужное значение + 1. Хочешь дойти до 9 — пиши 10. Хочешь дойти до 100 — пиши 101.
Эта же логика работает с шагом. Если нужны нечётные числа от 1 до 9:
for i in range(1, 10, 2):
print(i)
# 1, 3, 5, 7, 9
Здесь stop=10, хотя само 10 нечётное и даже не встретится на пути — важно лишь, что диапазон закрывается раньше него.
Процедура подбора аргументов range:
Определи первое значение, которое должна принять переменная цикла — это
start.Определи последнее нужное значение и прибавь к нему единицу — это
stop.Если нужен шаг, отличный от 1, укажи его третьим аргументом.
Напиши
for переменная in range(start, stop, step):с двоеточием.
Для обратного отсчёта логика та же, но вывернутая: start — первое (большее) значение, stop — на единицу меньше последнего нужного, step — отрицательный. Чтобы напечатать числа от 5 до 1:
for i in range(5, 0, -1):
print(i)
# 5, 4, 3, 2, 1
stop=0, хотя само 0 не нужно — Python остановится перед ним. Та же механика, тот же принцип: граница исключается всегда, в любом направлении.
Если после написания цикла результат оказался на одно значение короче, чем ожидалось — почти наверняка stop занижен на единицу. Это первое, что стоит проверить. Остальные правила синтаксиса — двоеточие и отступ — те же, что в любом цикле for.
