Python для новичковУправление ходом программыЦикл for и функция range

Цикл for и функция range

Уроки курсаЦикл for и функция range

В прошлом уроке счётчик в цикле while приходилось обновлять вручную — забыл написать i += 1, и цикл уходил в бесконечность. Цикл for решает эту проблему структурно: он сам берёт следующее значение из последовательности на каждой итерации, и счётчик обновлять не нужно.

Цикл for: синтаксис и переменная цикла

Цикл for перебирает элементы последовательности по одному. Его синтаксис выглядит так:

for переменная in последовательность:
    тело цикла

Заголовок заканчивается двоеточием. Тело обязательно оформляется отступом — как в if или while. Всё, что написано с отступом под for, выполнится столько раз, сколько элементов в последовательности.

Посмотрим на минимальный пример со списком:

for color in ["red", "green", "blue"]:
    print(color)

Первая итерация: Python берёт "red" из списка и присваивает его переменной color, затем выполняет print(color). Вторая итерация: берёт "green", снова выполняет тело. И так до конца списка. Вручную менять color нигде не нужно — Python делает это сам при переходе к следующему элементу.

Переменная цикла — это та самая переменная, объявленная между for и in. Её не нужно объявлять заранее: Python создаёт её в момент первой итерации. Имя выбирается произвольно, но принято давать осмысленное: если перебираешь цвета — color, если числа — i или n.

Важный момент: после того как цикл завершился, переменная цикла не исчезает. Она остаётся в памяти и хранит последнее присвоенное значение.

for color in ["red", "green", "blue"]:
    print(color)

print("Последний цвет:", color)  # выведет: Последний цвет: blue

Это не ошибка, а ожидаемое поведение Python. Но полагаться на это в реальном коде стоит осторожно: если цикл не выполнился ни разу (пустая последовательность), обращение к переменной цикла после него вызовет NameError.

Отступ в теле цикла — не стилистика, а синтаксис. Если убрать отступ, Python выдаст ошибку IndentationError. Стандарт — четыре пробела.

for color in ["red", "green", "blue"]:
print(color)  # IndentationError: expected an indented block

Пока в этих примерах последовательность задана списком вручную. На практике для числовых диапазонов используют встроенную функцию range() — она позволяет не писать числа руками. Об этом — в следующем разделе.