0% нашли этот документ полезным (0 голосов)
14 просмотров51 страница

Lecture05_Python_Loops

Документ описывает различные операторы циклов в программировании, включая итерации, бесконечные циклы и использование операторов break и continue. Приводятся примеры циклов for и while, а также объясняется, как использовать счетчики и фильтрацию в циклах для выполнения различных задач, таких как нахождение наибольшего и наименьшего значений. В документе также рассматриваются способы подсчета, суммирования и нахождения среднего арифметического в циклах.

Загружено:

vladhved07122005
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PPTX, PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
14 просмотров51 страница

Lecture05_Python_Loops

Документ описывает различные операторы циклов в программировании, включая итерации, бесконечные циклы и использование операторов break и continue. Приводятся примеры циклов for и while, а также объясняется, как использовать счетчики и фильтрацию в циклах для выполнения различных задач, таких как нахождение наибольшего и наименьшего значений. В документе также рассматриваются способы подсчета, суммирования и нахождения среднего арифметического в циклах.

Загружено:

vladhved07122005
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PPTX, PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 51

Операторы цикла.

Итерации.
n=5 Повторяющиеся шаги
Результат:
Нет Да Программа:
n>0? 5
n = 5 4
print(n) while n > 0 : 3
print(n)
n = n – 1 2
n = n -1 print('Старт!') 1
print(n) Старт!
0
Цикл (набор повторяющихся шагов) имеет переменную — счетчик
print('Старт!') цикла, значение которой изменяется с каждым проходом цикла.
Обычно счетчик цикла / переменная цикла проходит через
последовательность чисел.
.
n=5 Бесконечный цикл
Нет n> Да
0? n = 5
while n > 0 :
print('Намылить')
print('Намылить')
print('Смыть')
print('Смыть') print('Высушить')

print('Высушить') Что не так с этим циклом?


n=0 Другой цикл
Нет n> Да
0? n = 0
while n > 0 :
print('Намылить')
print('Намылить')
print('Смыть')
print('Смыть') print('Высушить')

print('Высушить') Что делает этот цикл?


Выход из цикла
• Оператор break завершает/прерывает текущий цикл и переходит к
оператору, следующему сразу после цикла

• Подобное тестирование цикла может быть произведено в любом


месте цикла
while True: > привет
line = input('> ') привет
if line == 'готово' : > сделано
break сделано
print(line) > готово
print('Готово!') Готово!
Выход из цикла
• Оператор break завершает/прерывает текущий цикл и переходит к
оператору, следующему сразу после цикла

• Подобное тестирование цикла может быть произведено в любом


месте цикла
while True: > привет
line = input('> ') привет
if line == 'готово' : > сделано
break сделано
print(line) > готово
print('Готово!') Готово!
Нет Да
while True: Верно ?
line = input('> ')
if line == 'готово' : ....
break
print(line)
print('Готово!')
break

...

print('Готово!')
Окончание итерации с
помощью continue
Оператор continue завершает текущий шаг цикла, переходит в
начало цикла и начинает следующую итерацию цикла

while True:
> привет
line = input('> ')
привет
if line[0] == '#' :
continue > # не печатай это
if line == 'готово' : > напечатай это!
break напечатай это!
print(line) > готово
print('Готово!') Готово!
Окончание итерации с
помощью continue
Оператор continue завершает текущий шаг цикла, переходит к
началу цикла и начинает следующую итерацию цикла

while True:
> привет
line = input('> ')
привет
if line[0] == '#' :
continue > # не печатай это
if line == 'готово' : > напечатай это!
break напечатай это!
print(line) > готово
print('Готово!') Готово!
Нет
Верно ? Да
while True:
line = input('> ') ....
if line[0] == '#' :
continue
if line == 'готово' : continue
break
print(line)
print('Готово!') ...
('!')

print('Готово!')
Неопределенные циклы
• Циклы с оператором While называются «неопределенными
циклами», потому что они продолжают свое выполнение до
тех пор, пока логическое условие не станет равно
False/Ложь

• Циклы, с которыми мы сталкивались до сих пор, достаточно


просты, чтобы проверить являются ли они «бесконечными»
или завершатся

• Но иногда бывает сложно понять, завершится цикл или нет


Циклы со счетчиком
Итерация по набору элементов…
Циклы со счетчиком
• Достаточно часто у нас есть некий список элементов, например,
строк в файле, то есть фактически определенный конечный набор
элементов

• Мы можем написать цикл, запускающийся однократно для каждого


из элементов списка, используя оператор for

• Такие циклы называются «циклами со счетчиком», так как они


выполняются определенное количество раз

• Мы говорим, что «циклы со счетчиком проходят через элементы


набора»
Простейший цикл со счетчиком
5
for i in [5, 4, 3, 2, 1] :
print(i)
4
print('Старт!') 3
2
1
Старт!
Цикл со счетчиком и элементами
типа строка

С Новым Годом: Василий


friends = ['Василий', 'Дмитрий',
'Татьяна']
С Новым Годом: Дмитрий
for friend in friends : С Новым Годом: Татьяна
print('С Новым Годом:', friend)
print('Готово!') Готово!
Простой цикл со счетчиком
Да Нет Переход к
Готово? следующему i 5
for i in [5, 4, 3, 2, 1] :
print(i) 4
3
print(i) print('Старт!')
2
1
Старт!

Циклы со счетчиком (циклы for) имеют заданные


print('Старт!') переменные итерации, которые изменяются с каждым
проходом цикла. Переменные итерации проходят по
последовательности или набору элементов
Конструкция с in...
Переменная Последовательность
• Переменная итерации / счетчик цикла
итерации / из пяти элементов
«движется» через последовательность
(упорядоченный набор) счетчик цикла

• Блок (тело) цикла выполняется


однократно для каждого значения в (in) for i in [5, 4, 3, 2, 1] :
последовательности print(i)

• Переменная итерации «движется» по


всем значениям в последовательности
Нет • Переменная итерации /
Да Переход к счетчик цикла «движется»
Готово? следующему i
через последовательность
(упорядоченный набор)
print(i)
• Блок (тело) кода выполняется
однократно для каждого
значения в (in)
последовательности

for i in [5, 4, 3, 2, 1] : • Переменная итерации


print(i) «движется» по всем значениям
в последовательности
i=5
Нет print(i)
Да Переход к
Готово? следующему i i=4
print(i)
print(i)
i=3
print(i)

i=2

for i in [5, 4, 3, 2, 1] : print(i)


print(i)
i=1
print(i)
Язык циклов:
что мы делаем в циклах
Примечание: несмотря на то, что эти примеры
просты, данные шаблоны применимы ко всем
видам циклов
Пишем «умные» циклы
Установите для некоторых
переменных начальные
значения

Трюк в том, чтобы заранее для (for) элемента в (in) данных:

«знать» нечто обо всем цикле, Ищите какое-либо значение


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

Смотрите на переменные
Итерация по набору элементов

print('Начало')
Начало
for thing in [9, 41, 12, 3, 74, 15] : 9
print(thing) 41
print('Конец')
12
3
74
15
Конец
Какое из чисел больше?
Какое из чисел больше?

3
Какое из чисел больше?

41
Какое из чисел больше?

12
Какое из чисел больше?

9
Какое из чисел больше?

74
Какое из чисел больше?

15
Какое из чисел больше?
Какое из чисел больше?

3 41 12 9 74 15
Какое из чисел больше?

largest_so_far -1
Какое из чисел больше?

largest_so_far 3
Какое из чисел больше?

41

largest_so_far 41
Какое из чисел больше?

12

largest_so_far 41
Какое из чисел больше?

largest_so_far 41
Какое из чисел больше?

74

largest_so_far 74
Какое из чисел больше?

15

74
Какое из чисел больше?

3 41 12 9 74 15

74
Нахождение наибольшего значения
$ python largest.py
largest_so_far = -1 В начале -1
print('В начале', largest_so_far)
9 9
for the_num in [9, 41, 12, 3, 74, 15] :
if the_num > largest_so_far : 41 41
largest_so_far = the_num 41 12
print(largest_so_far, the_num) 41 3
74 74
print('В конце', largest_so_far) 74 15
В конце 74
Мы создаем переменную, которая хранит наибольшее значение, которое мы видели к
этому моменту. Если текущее число, на которое мы смотрим, больше, то оно
становится новым наибольшим значением, которое мы видели к этому моменту
Больше паттернов циклов…
Счет внутри цикла
$ python countloop.py
zork = 0 В начале 0
print('В начале', zork) 19
for thing in [9, 41, 12, 3, 74, 15] : 2 41
zork = zork + 1
print(zork, thing)
3 12
print('В конце', zork) 43
5 74
6 15
В конце 6
Чтобы подсчитать сколько раз выполняется цикл, мы вводим переменную-счетчик,
значение которой стартует с 0. Значение этой переменной с каждым проходом
цикла увеличивается на единицу
Суммирование в цикле
$ python countloop.py
zork = 0 В начале 0
print('В начале', zork) 99
for thing in [9, 41, 12, 3, 74, 15] : 50 41
zork = zork + thing
print(zork, thing)
62 12
print('В конце', zork) 65 3
139 74
154 15
В конце 154
Чтобы сложить значения, с которыми мы сталкиваемся в цикле, вводим
переменную суммы с начальным значением 0, а затем добавляем значение к
сумме каждый раз по ходу цикла.
Нахождение среднего
арифметического в цикле
count = 0 $ python averageloop.py
sum = 0 В начале 0 0
print('В начале', count, sum) 199
for value in [9, 41, 12, 3, 74, 15] : 2 50 41
count = count + 1 3 62 12
sum = sum + value 4 65 3
print(count, sum, value)
print('В конце', count, sum, sum /
5 139 74
count) 6 154 15
В конце 6 154 25.666

Нахождение среднего арифметического объединяет операции


подсчета, суммирования и деления по завершению цикла
Фильтрация в цикле
print('Начало')
$ python search1.py
for value in [9, 41, 12, 3, 74, 15] :
if value > 20: Начало
print('Наибольшее Наибольшее число 41
число',value) Наибольшее число 74
print('Конец') Конец

Мы используем оператор if в цикле, чтобы поймать /


отфильтровать значения, которые нам нужны
Поиск с использованием логических
(булевых) переменных
$ python search1.py
В начале False
found = False
print('В начале', found) False 9
for value in [9, 41, 12, 3, 74, 15] : False 41
if value == 3 : False 12
found = True True 3
print(found, value) True 74
print('В конце', found) True 15
В конце True

Если нужно просто выполнить поиск и узнать, было ли найдено значение, мы


используем переменную с начальным значением False (Ложь), которое изменится
на True (Правда), как только мы нашли то, что искали
Как найти наименьшее значение
$ python largest.py
largest_so_far = -1 В начале -1
print('В начале', largest_so_far)
9 9
for the_num in [9, 41, 12, 3, 74, 15] :
if the_num > largest_so_far : 41 41
largest_so_far = the_num 41 12
print(largest_so_far, the_num) 41 3
74 74
print('В конце', largest_so_far) 74 15
В конце 74

Как нам изменить код, чтобы он нашел наименьшее значение в списке?


Нахождение наименьшего значения
smallest_so_far = -1
print('В начале', smallest_so_far)
for the_num in [9, 41, 12, 3, 74, 15] :
if the_num < smallest_so_far :
smallest_so_far = the_num
print(smallest_so_far, the_num)

print('В конце', smallest_so_far)

Мы изменили имя переменной на smallest_so_far, а также заменили > на <


Нахождение наименьшего значения
$ python smallbad.py
smallest_so_far = -1 В начале -1
print('В начале', smallest_so_far)
-1 9
for the_num in [9, 41, 12, 3, 74, 15] :
if the_num < smallest_so_far : -1 41
smallest_so_far = the_num -1 12
print(smallest_so_far, the_num) -1 3
-1 74
print('В конце', smallest_so_far) -1 15
В конце -1

Мы изменили имя переменной на smallest_so_far, а также заменили > на <


Нахождение наименьшего значения
smallest = None $ python smallest.py
print('Начало') Начало
for value in [9, 41, 12, 3, 74, 15] : 99
if smallest is None : 9 41
smallest = value
elif value < smallest :
9 12
smallest = value 33
print(smallest, value) 3 74
print('Конец', smallest) 3 15
Конец 3
У нас есть переменная с именем smallest. При первом проходе цикла
переменная smallest имеет значение None. Таким образом, наименьшим
значением становится первое значение из списка
Операторы is (то же самое) и
is not (не то же самое)
• Оператор is может
использоваться в логических
smallest = None
print('Начало')
выражениях
for value in [3, 41, 12, 9, 74, 15] :
if smallest is None : • Подразумевает «то же самое»
smallest = value
elif value < smallest : • Похож на оператор ==, но
smallest = value является более строгим
print(smallest, value)
сравнением
print('Конец', smallest)
• is not — тоже логический
оператор

Вам также может понравиться