Вложенные циклы

12.12.2022 0 Автор : Марина Николаевна
Вложенные циклы

Вложенные циклы — это отдельный самостоятельный цикл в составе ещё одного цикла.

Вложенный цикл — это цикл, находящийся внутри другого цикла.

Часы служат хорошим примером работы вложенного цикла. Секундная, минутная и часовая стрелки вращаются вокруг циферблата.Часовая стрелка смещается всего на 1 шаг для каждых 60 шагов минутной стрелки. И секундная стрелка должна сделать 60 шагов для 1 шага минутной стрелки. Это означает, что для каждого полного оборота часовой стрелки (12 шагов), минутная стрелка делает 720 шагов.

Рассмотрим цикл на примере электронных часов. На экране электронных часов отражается: часы, минуты и секунды.

Цикл для секунд: секунды от 0 до 59:

for seconds in range(60):
    print(seconds)

Можно добавить переменную minutes и вложить цикл написанный выше внутрь еще одного цикла, который повторяется 60 раз:

for minutes in range(60):
    for seconds in range(60):
        print(minutes, ':', seconds)

Для того, чтобы сделать модель законченной, можно добавить еще одну переменную для подсчета часов:

for hours in range(24):
    for minutes in range(60):
        for seconds in range(60):
            print(hours, ':', minutes, ':', seconds)

Результатами работы программного кода будет следующим:

0 : 0 : 0
0 : 0 : 1
0 : 0 : 2
...
23 : 59 : 58
23 : 59 : 59 

Самый внутренний цикл сделает 60 итераций для каждой итерации среднего цикла. Средний цикл сделает 60 итераций для каждой итерации самого внешнего цикла. Когда самый внешний цикл сделает 24 итерации, средний сделает 24 * 60 = 1440 итераций, и самый внутренний цикл сделает 24 * 60 * 60 = 86400  итераций!

Пример имитационной модели часов подводит нас к нескольким моментам, имеющим отношение к вложенным циклам:

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

Циклы for  и  waile могут быть вложены друг в друга.