Как правило, циклы for
используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного.
Для повторения цикла некоторое заданное число раз n
можно использовать цикл for
вместе с функцией range
:
for i in range(n): Тело цикла
Например:
sum = 0 sum_sq = 0 for i in range(3): sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i print(sum, sum_sq)
В качестве n
может использоваться числовая константа, переменная или произвольное арифметическое выражение (например, 2 ** 10
). Если значение n
равно нулю или отрицательное, то тело цикла не выполнится ни разу.
Код выше эквивалентен такому:
sum = 0 sum_sq = 0 i = 0 sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i i = 1 sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i i = 2 sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i print(sum, sum_sq)
Если задать цикл таким образом:
for i in range(a, b): Тело цикла
то индексная переменная i
будет принимать значения от a
до b - 1
, то есть первый параметр функции range
, вызываемой с двумя параметрами, задаёт начальное значение индексной переменной, а второй параметр — значение, которая индексная переменная принимать не будет. Если же a≥b
, то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от до n
можно воспользоваться следующей программой:
sum = 0 for i in range(1, n + 1): sum += i
В этом примере переменная i
принимает значения 1, 2, ..., n
, и значение переменной sum
последовательно увеличивается на указанные значения.
Наконец, чтобы организовать цикл, в котором индексная переменная будет уменьшаться, необходимо использовать функцию range
с тремя параметрами. Первый параметр задаёт начальное значение индексной переменной, второй параметр — значение, до которого будет изменяться индексная переменная (не включая его!), а третий параметр — величину изменения индексной переменной. Например, сделать цикл по всем нечётным числам от 1 до 99 можно при помощи функции range(1, 100, 2)
, а сделать цикл по всем числам от 100 до 1 можно при помощи range(100, 0, -1)
.
Более формально, цикл for i in range(a, b, d)
при d > 0
задаёт значения индексной переменной i = a
,i = a + d
, i = a + 2 * d
и так для всех значений, для которых i < b
. Если же d < 0
, то переменная цикла принимает все значения i > b
.