Циклы в 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
15
40
Переменная цикла
В общей структуре цикла for
у нас фигурировала переменная цикла. Давайте поговорим о ней подробнее.
Рассмотрим следующую программу:
for i in range(7):
print(i)
Данная программа выведет
0
1
2
3
4
5
6
Здесь функция range()
генерирует последовательность целых чисел от 0
до n
не включительно, где n — количество повторений цикла, которое мы указали в качестве аргумента, а переменная цикла i
ссылается на эти значения по очереди. Притом можно заметить, что значение, на которое ссылается переменная i
, меняется в зависимости от номера текущего повторения цикла (как правило, говорят — текущей итерации цикла). Таким образом, обращаясь к i
, мы обращаемся к числам и по очереди.
Примечание 1. Использование значений переменной цикла не является обязательным, но удобно в некоторых программах.
Примечание 2. Для имени переменной цикла действуют все те же ограничения, что и для имени обычной переменной.
Примечание 3. Обратите внимание на то, что в данном примере ровно такое число повторений, какое передано в функцию range()
.
Функция range с двумя аргументами
Если необходимо изменить диапазон значений, на который будет ссылаться переменная цикла (по умолчанию от 0 до указанного числа не включительно), то можно передавать в функцию range()
два аргумента вместо одного. В этом случае необходимо указать стартовое и конечное значение для переменной.
Рассмотрим следующую программу:
for j in range(-3, 5):
print(j, '— очередная итерация')
Данная программа выведет
-3 — очередная итерация
-2 — очередная итерация
-1 — очередная итерация
0 — очередная итерация
1 — очередная итерация
2 — очередная итерация
3 — очередная итерация
4 — очередная итерация
Здесь переменная j
ссылается на целые числа от до не включительно.
Например, если нам нужно вывести квадраты всех двузначных натуральных чисел, то можем сделать это следующим образом:
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 — последнее число, которое выведет данная программа.