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