Similar presentations:
Управляющие структуры. Операторы цикла
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 = 6while 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=1for 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()
programming