Программирование на языке Python
Алгоритмы циклической структуры
Условные циклические алгоритмы
Безусловные циклические алгоритмы
Безусловные циклические алгоритмы
Что такое цикл?
Что такое цикл? Рассмотрим на примерах
Повторения в программе
Блок-схема цикла
Как организовать цикл?
Цикл с условием
Цикл с условием
Цикл с условием
Сколько раз выполняется цикл?
Цикл с постусловием
Задачи
Задачи-2
Задачи-2
Цикл с параметром
Цикл с параметром
Цикл с параметром: другой шаг
Сколько раз выполняется цикл?
Задачи
Задачи
Вложенные циклы
Вложенные циклы
Вложенные циклы
Вложенные циклы
Вложенные циклы
Поиск простых чисел – как улучшить?
Задачи
Задачи
Операторы управления циклом
Оператор прерывания break
Оператор break с циклом for
Оператор break с циклом while
Оператор break с вложенными циклами
Оператор продолжения continue
Оператор continue с циклом for
Оператор continue с циклом while
Оператор pass
Оператор pass с циклом for
Бесконечный цикл Dumpy с оператором pass
Оператор многоточие (…)
886.50K
Category: programmingprogramming

Управляющие структуры. Операторы цикла

1. Программирование на языке Python

Лекция 3. Управляющие структуры.
Операторы цикла
Заманова С.К.

2. Алгоритмы циклической структуры

Циклом называют повторение одних и тех же действий
(шагов). Последовательность действий, которые
повторяются в цикле, называют телом цикла.
Существует несколько типов алгоритмов циклической
структуры. На рис. представлены условные
циклические алгоритмы:
Алгоритм с предусловием
Алгоритм с постусловием
2

3. Условные циклические алгоритмы

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

4. Безусловные циклические алгоритмы

4
Существует так называемый безусловный циклический
алгоритм, который удобно использовать, если известно,
сколько раз необходимо выполнить тело цикла.
Алгоритм без условия
Алгоритм с известным числом
повторений

5. Безусловные циклические алгоритмы

5
• Выполнение безусловного циклического алгоритма начинается с присвоения переменной i стартового значения in.
• Затем следует проверка, не превосходит ли переменная i
конечное значение iк. Если превосходит, то цикл считается
завершенным, и управление передается следующему за
телом цикла оператору. В противном случае выполняется
тело цикла, и переменная i меняет свое значение в соответствии с указанным шагом di. Далее, снова производится
проверка значения переменной i и алгоритм повторяется.
• Понятно, что безусловный циклический алгоритм можно
заменить любым условным.
• Отметим, что переменную i называют параметром цикла,
так как это переменная, которая изменяется внутри цикла
по определенному закону и влияет на его окончание

6. Что такое цикл?

Циклы позволяют нам выполнять оператор или группу
операторов несколько раз..
Язык программирования Python предоставляет следующие
типы циклов:
• цикл while
Повторяет оператор или группу операторов, пока
заданное условие имеет значение TRUE. Он проверяет
условие перед выполнением тела цикла.
• цикл for
Выполняет последовательность операторов несколько
раз и сокращает код, управляющий переменной цикла.
• вложенные циклы
Вы можете использовать один или несколько циклов
внутри любого другого цикла while, for или do..while.

7. Что такое цикл? Рассмотрим на примерах

Цикл – это многократное выполнение одинаковых
действий.
Два вида циклов:
• цикл с известным числом шагов (сделать 10 раз)
• цикл с неизвестным числом шагов (делать, пока не
надоест)
Задача. Вывести на экран 10 раз слово «Привет».
? Можно ли решить известными методами?
7

8. Повторения в программе

print("Привет“)
print("Привет")
...
print("Привет")
? Что плохо?

9. Блок-схема цикла

начало
сделали 10 раз?
да
конец
нет
print("Привет!")
тело цикла

10. Как организовать цикл?

счётчик = 0
пока счётчик < 10:
print("Привет“)
увеличить счётчик на 1
результат операции
автоматически
сравнивается с нулём!
счётчик = 10
пока счётчик > 0:
print("Привет")
уменьшить счётчик на 1
? Какой способ удобнее для процессора?

11. Цикл с условием

Задача. Определить количество цифр в десятичной
записи целого положительного числа, записанного в
переменную n.
n
счётчик
счётчик = 0
пока n > 0:
1234
0
отсечь последнюю цифру n
123
1
увеличить счётчик на 1
12
2
? Как отсечь последнюю цифру?
n = n // 10
1
0
3
4
? Как увеличить счётчик на 1?
счётчик = счётчик + 1
счётчик += 1

12. Цикл с условием

начальное значение
счётчика
заголовок
цикла
условие
продолжения
count = 0
while n > 0 :
n = n // 10
count += 1
тело цикла
! Цикл с предусловием – проверка на входе в цикл!

13. Цикл с условием

При известном количестве шагов:
k=0
while k < 10:
print ( "привет" )
k += 1
Зацикливание:
k=0
while k < 10:
print ( "привет" )

14. Сколько раз выполняется цикл?

a = 4; b = 6
while a < b: a += 1
2 раза
a=6
a = 4; b = 6
while a < b: a += b
1 раз
a = 10
a = 4; b = 6
while a > b: a += 1
0 раз
a=4
a = 4; b = 6
while a < b: b = a - b
1 раз
b = -2
a = 4; b = 6
while a < b: a -= 1
зацикливание

15. Цикл с постусловием

Задача. Обеспечить ввод положительного числа в
переменную n.
бесконечный
цикл
while True:
print ( "Введите положительное число:" )
n = int ( input() )
if n < 0: break
тело цикла
условие
прервать
выхода
цикл
• при входе в цикл условие не проверяется
• цикл всегда выполняется хотя бы один раз

16. Задачи

«A»: Напишите программу, которая получает два целых числа
A и B (0 < A < B) и выводит квадраты всех натуральных
чисел в интервале от A до B.
Пример:
Введите два целых числа:
10 12
10*10=100
11*11=121
12*12=144
«B»: Напишите программу, которая получает два целых числа и
находит их произведение, не используя операцию
умножения. Учтите, что числа могут быть отрицательными.
Пример:
Введите два числа:
10 -15
10*(-15)=-150

17. Задачи-2

«A»: Ввести натуральное число и найти сумму его цифр.
Пример:
Введите натуральное число:
12345
Сумма цифр 15.
«B»: Ввести натуральное число и определить, верно ли, что в
его записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите натуральное число:
12342
Нет.
Пример:
Введите натуральное число:
12245
Да.

18. Задачи-2

«C»: Ввести натуральное число и определить, верно ли,
что в его записи есть две одинаковые цифры (не
обязательно стоящие рядом).
Пример:
Введите натуральное число:
12342
Да.
Пример:
Введите натуральное число:
12345
Нет.

19. Цикл с параметром

Задача. Вывести 10 раз слово «Привет!».
? Можно ли сделать с циклом «пока»?
i=0
while i < 10 :
print("Привет!")
i += 1
Цикл с параметром:
for i in range(10) :
print("Привет!")
в диапазоне
[0,10)
! Не включая 10!
range(10) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

20. Цикл с параметром

Задача. Вывести все степени двойки от 21 до 210.
? Как сделать с циклом «пока»?
k=0
while k < 10 :
print ( 2**k )
k += 1
Цикл с параметром:
for k in range(1,11) :
print ( 2**k )
в диапазоне
[1,11)
! Не включая 11!
range(1,11) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

21. Цикл с параметром: другой шаг

10,9,8,7,6,5,4,3,2,1
шаг
for k in range(10,0,-1):
print ( k**2 )
? Что получится?
1,3,5,7,9
for k in range(1,11,2) :
print ( k**2 )
1
9
25
49
81
100
81
64
49
36
25
16
9
4
1

22. Сколько раз выполняется цикл?

a=1
for i in range( 3): a += 1
a= 4
a=1
for i in range( 3,1): a += 1
a= 1
a=1
for i in range( 1,3,-1): a += 1
a= 1
a=1
for i in range( 3,1,-1): a += 1
a= 3

23. Задачи

«A»: Найдите все пятизначные числа, которые при
делении на 133 дают в остатке 125, а при делении
на 134 дают в остатке 111.
«B»: Натуральное число называется числом
Армстронга, если сумма цифр числа, возведенных
в N-ную степень (где N – количество цифр в числе)
равна самому числу. Например, 153 = 13 + 53 + 33.
Найдите все трёхзначные Армстронга.

24. Задачи

«С»: Натуральное число называется автоморфным, если
оно равно последним цифрам своего квадрата.
Например, 252 = 625. Напишите программу, которая
получает натуральное число N и выводит на экран
все автоморфные числа, не превосходящие N.
Пример:
Введите N:
1000
1*1=1
5*5=25
6*6=36
25*25=625
76*76=5776

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

В Python один или несколько циклов внутри оператора
цикла называется вложенным циклом. Основной цикл
считается внешним циклом, а цикл(ы) внутри внешнего
цикла называются внутренними циклами.
Язык программирования Python позволяет использовать
один цикл внутри другого цикла.
Цикл — это блок кода, который многократно выполняет
определенные инструкции.
Вложенные циклы можем создавать с помощью циклов
for и while.
Синтаксис вложенного цикла :
while выражение:
for параметр in диапазоне:
while выражение:
for параметр in диапазоне:
операторы
операторы
операторы
операторы

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

Задача. Вывести все простые числа в диапазоне
от 2 до 1000.
сделать для n от 2 до 1000
если число n простое то
вывод n
нет делителей [2.. n-1]:
проверка в цикле!
? Что значит «простое число»?
for n in range(2, 1001):
if число n простое:
print( n )

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

for n in range(2, 1001):
count = 0
for k in range(2,n):
if n % k == 0:
count += 1
if count == 0:
print( n )
вложенный цикл

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

for i in range(1,4):
for k in range(1,4):
print( i, k )
? Как меняются переменные?
! Переменная внутреннего
цикла изменяется быстрее!
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

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

for i in range(1,5):
for k in range(1,i+1):
print( i, k )
? Как меняются переменные?
! Переменная внутреннего
цикла изменяется быстрее!
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4

30. Поиск простых чисел – как улучшить?

n k m, k m k 2 n k n
? Что плохо?
while k <= math.sqrt(n):

count = 0
k=2
Как ещё улучшить?
while k*k <= n :
if n % k == 0:
выйти из цикла
count += 1
while k*k <= n:
k += 1
if n % k == 0: break
k += 1
если вышли
if k*k > n:
по условию
print ( n )
?

31. Задачи

«A»: Напишите программу, которая получает натуральные
числа A и B (A<B) и выводит все простые числа в
интервале от A до B.
Пример:
Введите границы диапазона:
10 20
11 13 17 19
«B»: В магазине продается мастика в ящиках по 15 кг,
17 кг, 21 кг. Как купить ровно 185 кг мастики, не
вскрывая ящики? Сколькими способами можно это
сделать?

32. Задачи

«C»: Ввести натуральное число N и вывести все
натуральные числа, не превосходящие N и
делящиеся на каждую из своих цифр.
Пример:
Введите N:
15
1 2 3 4 5 6 7 8 9 11 12 15

33. Операторы управления циклом

Операторы управления циклом изменяют выполнение
из его обычной последовательности.
Python поддерживает следующие операторы управления:
• оператор break
Завершает оператор цикла и передает выполнение
оператору, следующему непосредственно за циклом.
• оператор continue
Заставляет цикл пропустить оставшуюся часть своего
тела и немедленно повторно проверить свое состояние
перед повторением.
• оператор pass
Оператор pass в Python используется, когда оператор
требуется синтаксически, но вы не хотите, чтобы
выполнялась какая-либо команда или код.

34. Оператор прерывания break

Операторы break в Python используется для завершения
текущего цикла и возобновления выполнения со следующего
оператора, как и традиционный оператор break в C.
Наиболее распространенное использование оператора
break в Python - когда срабатывает некое внешнее условие,
требующее внезапного выхода из цикла. Оператор break
может использоваться как в циклах while, так и for в Python.
Если вы используете вложенные циклы в Python, оператор
break останавливает выполнение самого внутреннего цикла
и начинает выполнение следующей строки кода после блока
Синтаксис оператора break
оператор цикла:
проверка условий:
break

35. Оператор break с циклом for

Если мы используем оператор break внутри цикла for, он
прерывает нормальный ход программы и выходит из цикла
до завершения итерации.
Пример работы оператора break в цикле for.
for letter in 'Python':
if letter == 'h':
break
print ("Current Letter :", letter)
print ("Good bye!")
Current Letter : P
Current Letter : y
Current Letter : t
Good bye!

36. Оператор break с циклом while

Подобно циклу for, мы можем использовать оператор break,
чтобы пропустить код внутри цикла while после того, как
указанное условие станет ИСТИННЫМ.
Пример использования оператора break с циклом while.
var = 10
while var > 0:
print ('Current variable value:', var)
var = var -1
if var == 5:
Current variable value: 10
break
print ("Good bye!") Current variable value: 9
Current variable value: 8
Current variable value: 7
Current variable value: 6
Good bye!

37. Оператор break с вложенными циклами

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

38. Оператор продолжения continue

Оператор continue используется для пропуска выполнения
программного блока и возвращает управление в начало
текущего цикла для запуска следующей итерации.
При обнаружении этого оператора цикл начинает следующую
итерацию без выполнения оставшихся операторов в текущей
итерации.
Оператор continue является полной противоположностью
оператору break . Он пропускает оставшиеся операторы в
текущем цикле и начинает следующую итерацию.
Синтаксис оператора continue
оператор цикла:
проверка условий:
continue

39. Оператор continue с циклом for

Внутри цикла for следует включить оператор if для проверки
определенного условия. Если условие становится TRUE,
оператор continue пропустит текущую итерацию и перейдет к
следующей итерации цикла.
Пример работы оператора continue в цикле for.
for letter in 'Python':
if letter == 'h':
continue
print ("Current Letter:", letter)
Current Letter : P
print ("Good bye!")
Current Letter : y
Current Letter : t
Current Letter : o
Current Letter : n
Good bye!

40. Оператор continue с циклом while

Оператор continue используется в циклах «for», а также в
циклах «while» для пропуска выполнения текущей итерации и
передачи управления программой следующей итерации.
Пример. Проверка простых множителей.
num = 60
print ("Prime factors for: ", num)
d=2
while num > 1:
Prime factors for: 60
if num % d == 0:
2
print (d)
2
Prime factors for: 75
num=num/d
3
3
continue
5
5
d=d+1
5

41. Оператор pass

Оператор pass используется, когда оператор синтаксически
необходим, но вы не хотите, чтобы выполнялась какая-либо
команда или код.
Это null, что означает, что при его выполнении ничего не
происходит. Также полезен в местах, где фрагмент кода будет
добавлен позже, но требуется заполнитель, чтобы
гарантировать, что программа будет работать без ошибок.
Например, в определении функции или класса, где
реализация еще не написана, оператор pass можно
использовать, чтобы избежать SyntaxError.
Кроме того, он также может служить заполнителем в
операторах потока управления, таких как циклы for и while
Синтаксис оператора pass
pass

42. Оператор pass с циклом for

Пример работы оператора pass в цикле for.
for letter in 'Python':
if letter == 'h':
pass
print ('This is pass block')
print ("Current Letter:", letter)
Current Letter : P
print ("Good bye!")
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!

43. Бесконечный цикл Dumpy с оператором pass

Достаточно просто создать бесконечный цикл с помощью
оператора pass в Python.
Пример бесконечного цикла, который ничего не делает при
каждом прохождении.
while True: pass
# Type Ctrl-C to stop
Поскольку тело цикла представляет собой просто
пустой оператор, Python застревает в этом
цикле.

44. Оператор многоточие (…)

Python 3.X позволяет использовать многоточия (кодируемые
как три последовательные точки ...) вместо оператора pass.
Оба служат в качестве заполнителей для кода, который будет
написан позже.
Пример создания функции, которая ничего не делает
специально для кода, который будет заполнен позже, то мы
можем использовать ...
def func1():
# Alternative to pass
...
# Works on same line too
def func2(): ...
# Does nothing if called
func1()
func2()
English     Русский Rules