Цикл 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