Статья Автор: Александр Ф. Алейников

5.1 Цикл for

Циклы в Python

Цикл — это конструкция, которая позволяет многократно выполнять заданный набор инструкций.

В языке Python существуют две основные разновидности циклов:

  • Циклы, выполняющиеся заданное количество раз (цикл for)
  • Циклы, выполняющиеся до наступления какого-то события (цикл while)

Цикл for

Предположим, наша задача — вывести на экран значение переменной 5 раз. Это можно сделать следующим образом:

a = 15
print(a)
print(a)
print(a)
print(a)
print(a)

Приведённый выше код можно переписать с использованием цикла for

a = 15
for i in range(5):
    print(a)

Обе программы выводят

15
15
15
15
15

В ряде задач требуется большое количество раз повторять одни и те же операции, что удобно реализовать с помощью циклов.

Структура цикла for следующая:

for переменная цикла in range(количество повторений):
    блок кода

 Блок кода внутри цикла называется телом цикла.

Как и при написании условия if, двоеточие в конце строки сообщает о том, что дальше находится блок кода, отделённый отступом. Этот блок выполнится столько раз, сколько повторений будет указано в качестве аргумента в функции range().

Рассмотрим программу, которая считывает 4 числа и выводит их на экран:

for i in range(4):
    a = int(input('Считываем очередное число'))
    print(a)

При последовательном вводе чисел 10, 20, 1540 данная программа выведет

10
20
15
40

 Переменная цикла

В общей структуре цикла for у нас фигурировала переменная цикла. Давайте поговорим о ней подробнее.

Рассмотрим следующую программу:

for i in range(7):
    print(i)

Данная программа выведет

0
1
2
3
4
5
6

Здесь функция range() генерирует последовательность целых чисел от 0 до n не включительно, где n — количество повторений цикла, которое мы указали в качестве аргумента, а переменная цикла i ссылается на эти значения по очереди. Притом можно заметить, что значение, на которое ссылается переменная i , меняется в зависимости от номера текущего повторения цикла (как правило, говорят — текущей итерации цикла). Таким образом, обращаясь к i, мы обращаемся к числам 0,1,2,3,4,5 и 6 по очереди.

Примечание 1. Использование значений переменной цикла не является обязательным, но удобно в некоторых программах.
Примечание 2. Для имени переменной цикла действуют все те же ограничения, что и для имени обычной переменной.
Примечание 3. Обратите внимание на то, что в данном примере ровно такое число повторений, какое передано в функцию range().

Функция range с двумя аргументами

Если необходимо изменить диапазон значений, на который будет ссылаться переменная цикла (по умолчанию от 0 до указанного числа не включительно), то можно передавать в функцию range() два аргумента вместо одного. В этом случае необходимо указать стартовое и конечное значение для переменной.

Рассмотрим следующую программу:

for j in range(-3, 5):
    print(j, '— очередная итерация')

Данная программа выведет

-3 — очередная итерация
-2 — очередная итерация
-1 — очередная итерация
0 — очередная итерация
1 — очередная итерация
2 — очередная итерация
3 — очередная итерация
4 — очередная итерация

Здесь переменная j ссылается на целые числа от 3 до 5 не включительно.

Например, если нам нужно вывести квадраты всех двузначных натуральных чисел, то можем сделать это следующим образом:

for number in range(10, 100):
    print(number ** 2)

В этом случае будет выведено:

100
121
144
...
9801

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

В программе:

for t in range(34, 19):
    print('Этот текст выведен не будет')

цикл не выполнится ни разу.

Функция range с тремя аргументами

По умолчанию функция range() генерирует последовательность целых чисел с шагом 1. Этот шаг можно регулировать, если  передать в функцию range() третий параметр. Следующий код:

for k in range(3, 20, 5):
    print(k)

выведет

3
8
13
18

Отрицательный шаг функции range

Во всех примерах выше значение, на которое ссылается переменная цикла, менялось от меньшего к большему. В ряде же задач удобно идти от большего числа к меньшему. В этом случае необходимо указать отрицательный шаг генерации.

Программа

for var in range(21, 9, -3):
    print(var)

Выведет

21
18
15
12

Обратите внимание, что логика работы первых двух аргументов остаётся такой же: первый аргумент — левая граница, второй аргумент — правая граница не включительно, поэтому число 9 не будет выведено на экран.

Оператор break

В ряде некоторых задач (в том числе из ЕГЭ) необходимо преждевременно осуществлять выход из цикла. Для этого используется оператор break. Когда интерпретатор доходит до инструкции, содержащей break, он выходит из цикла и переходит к дальнейшим строкам кода (при их наличии).

Рассмотрим пример:

for i in range(2, 10):
    print(i)
    if i > 5:
        break

 Данная программа выведет

2
3
4
5
6

То есть при i = 5 условие if i > 5 ещё не выполняется, а уже на следующем шаге при i = 6 оператор break прервёт выполнение цикла. Поэтому 6 — последнее число, которое выведет данная программа.

Печать