2.4 Счетный цикл#
Синтаксис счётного цикла#
Для задач, которые мы формулируем фразами «Нужно выполнить для каждого элемента из …» и «Нужно выполнить N раз», больше подойдет применение счетного цикла. В нем уже нет условия, на основе которого определяется, надо ли выполнять следующие итерации. Вместо этого циклу указывается некоторый объект - контейнер, составляющие которого будут поочередно перебираться на каждой итерации. Чтобы на начальном этапе глубоко не вдаваться в разнообразие типов данных в Python, скажем, что таким образом в счетных циклах мы будем перебирать некоторые коллекции. Сами коллекции мы поделим на несколько типов данных, более подробное знакомство с которыми произойдет в следующем модуле.
Коллекции - контейнеры, включающие в себя другие объекты
Последовательности - упорядоченные коллекции из любых объектов
Множества - неупорядоченные коллекции из уникальных объектов
Отображения - неупорядоченные коллекции с доступом к объекту по ключу
Чтобы реализовать счетный цикл, перебирающий ту или иную коллекцию, используется следующий синтаксис:
for Объект in Коллекция:
Блок инструкций
На каждой итерации цикла мы будем получать следующий объект из коллекции, пока они не закончатся. Фактически в первой строчке будет производиться операция присваивания, а на месте объекта будет определяться переменная, которая на каждой итерации будет ссылаться на новый объект, полученный из коллекции.
Из различных коллекций нам пока знаком только строковый тип данных, относящийся к последовательностям, поэтому рассмотрим пример работы цикла на нем:
text_sequence = "some text"
# цикл по строке будет перебирать символы внутри строки
for char in text_sequence: # вместо char может быть любое другое имя переменной
print(char) # на каждой итерации в char будет новое значение
s
o
m
e
t
e
x
t
Инструкции управления циклом#
Для счетного цикла доступны все те же необязательные блоки и инструкции, которые встречались в условном цикле. Также можно использовать continue и break для прерываний, else для выполнения инструкций в случае успешного выполнения цикла (когда в нем не произошло прерывания break).
text_sequence = "some text"
for char in text_sequence:
if char == "e":
continue
if char == " ":
break
print(char)
else:
print("Text without spaces")
s
o
m