Циклы языка Python

Цикл While

В своей наиболее сложной форме инструкция while состоит из строки заголовка с условным выражением, тела цикла, содержащего одну или более инструкций с отступами, и необязательной части else, которая выполняется, когда управление передается за пределы цикла без использования инструкции break. Интерпретатор продолжает вычислять условное выражение в строке заголовка и выполнять вложенные инструкции в теле цикла, пока условное выражение не вернет ложное значение:

while <test>: # Условное выражение test
<statements1> # Тело цикла
if <test2>: break # Выйти из цикла, пропустив часть else
if <test3>: continue # Перейти в начало цикла, к выражению test1
else: # Необязательная часть else
<statements2> # Выполняется, если выход из цикла производится не
# инструкцией break

Пример:

> x = ‘spam’
>>> while x: # Пока x не пустая строка
…     print(x, end=’ ‘)
…     x = x[1:] # Вырезать первый символ из x

spam pam am m

Цикл for

Циклы for в языке Python начинаются со строки заголовка, где указывается переменная для присваивания (или – цель), а также объект, обход которого будет выполнен. Вслед за заголовком следует блок (обычно с отступами) инструкций, которые требуется выполнить:

for <target> in <object>: # Связывает элементы объекта с переменной цикла
<statements> # Повторяющееся тело цикла: использует переменную цикла
else:
<statements> # Если не попали на инструкцию ‘break’

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

Пример:

>> for x in [“spam”, “eggs”, “ham”]:
… print(x, end=’ ‘)

spam eggs ham

 

Пример с перебором словарей:

> D = {‘a’: 1, ‘b’: 2, ‘c’: 3}
>>> for key in D:
… print(key, ‘=>’, D[key]) # Используется итератор словаря
… # и операция индексирования
a => 1
c => 3
b => 2
>>> list(D.items())
[(‘a’, 1), (‘c’, 3), (‘b’, 2)]
>>> for (key, value) in D.items():
… print(key, ‘=>’, value) # Обход ключей и значений одновременно

 

Пример с вложенными структурами данных:

>> ((a, b), c) = ((1, 2), 3) # Вложенные структуры также могут использоваться
>>> a, b, c
(1, 2, 3)
>>> for ((a, b), c) in [((1, 2), 3), ((4, 5), 6)]: print(a, b, c)

1 2 3
4 5 6

Генерирование индексов и элементов: enumerate

>>> S = ‘spam’
>>> for (offset, item) in enumerate(S):
… print(item, ‘appears at offset’, offset)

s appears at offset 0
p appears at offset 1
a appears at offset 2
m appears at offset 3