Главная страница

Решение задач Аннотация. Урок посвящен циклу for


Скачать 3.04 Mb.
НазваниеРешение задач Аннотация. Урок посвящен циклу for
Дата28.06.2022
Размер3.04 Mb.
Формат файлаdocx
Имя файла5. Python.docx
ТипРешение
#618203
страница21 из 23
1   ...   15   16   17   18   19   20   21   22   23

Ревью кода-6


На обработку поступает натуральное число. Нужно написать программу, которая выводит на экран произведение цифр введенного числа. Программист торопился и написал программу неправильно.

Найдите все ошибки в этой программе (их ровно 3). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

n = input()

product = n % 10

while n >= 10:

digit = n % 10

product = product * digit

n //= 10

print(product)

Тема: вложенные циклы


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

  2. Операторы break и continue во вложенных циклах

  3. Решение задач

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

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


Вложенный цикл расположен в еще одном цикле. Часы служат хорошим примером работы вложенного цикла. Секундная, минутная и часовая стрелки вращаются вокруг циферблата. Часовая стрелка смещается всего на 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, так и while.

Операторы break и continue во вложенных циклах


Оператор break выполняет прерывание ближайшего цикла в котором он расположен. Аналогично, оператор continue осуществляет переход на следующую итерацию ближайшего цикла.

Рассмотрим программный код:

for i in range(3):

for j in range(3):

print(i, j)

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

0 0

0 1

0 2

1 0

1 1

1 2

2 0

2 1

2 2

Изменим код, добавив во вложенный цикл условный оператор с оператором break:

for i in range(3):

for j in range(3):

if i == j:

break

print(i, j)

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

1 0

2 0

2 1

Изменим оператор прерывания break на оператор continue:

for i in range(3):

for j in range(3):

if i == j:

continue

print(i, j)

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

0 1

0 2

1 0

1 2

2 0

2 1

Если необходимо добиться прерывания внешнего цикла из-за выполнения условия во внутреннем, то стоит сделать это через сигнальную метку.
1   ...   15   16   17   18   19   20   21   22   23


написать администратору сайта