Professional Documents
Culture Documents
L05 Text PDF
L05 Text PDF
Наприклад, у нас є список num і ми хочемо красиво вивести на екран кожен з його
елементів:
Якщо в списку буде п'ятсот елементів ?! Для подібних випадків в Python існують цикли.
Цикли є рушійною силою в програмуванні. Їх розуміння дозволить писати справжні живі і
корисні програми!
0.8 - number
7.0 - number
6.8 - number
- 6 - number
>>>
Цикл for дозволяє перебрати всі елементи зазначеного списку. Цикл спрацює рівно
стільки разів, скільки елементів знаходиться в списку. Ім'я змінної, в якій на кожному кроці
буде міститися елемент списку, вибирає програміст. У нашому прикладі це змінна з ім'ям i.
На першому кроці змінній i буде присвоєно перший елемент списку num, рівний 0.8.
Потім програма переходить в тіло циклу for, відокремлене відступами (чотири пробіли
або одна табуляція). У тілі циклу міститься виклик функції print, до якої передається
змінна i.
На наступному кроці змінній i буде присвоєно другий елемент списку, рівний 7.0.
Відбудеться виклик функції print для відображення вмісту змінної i на екрані і т.д. до
У загальному вигляді цикл for для перебору всіх елементів зазначеного списку виглядає
наступним чином:
Невеликий приклад:
1
2
hi
>>>
h
e
l
l
o
>>>
Цикл for дозволяє не тільки виводити елементи рядка або списку на екран, але і
виконувати між ними певні операції:
R
>>>
>>> range(0,10,1)
range (0, 10)
>>> range(10)
range (0, 10)
>>>
Справа в тому, що для створення діапазону чисел необхідно використовувати цикл for:
0 1 2 3 4 5 6 7 8 9
>>> for i in range(10 ):
print(i, end ='')
0 1 2 3 4 5 6 7 8 9
>>> for i in range(2, 20, 2):
print(i, end ='')
20 18 16 14 12 10 8 6 4
>>>
>>> total = 0
>>> for i in range(1, 101):
total = total + i
>>> total
5050
>>>
Змінній i на кожному кроці циклу буде присвоюватися значення з діапазону від 1 до 100
(крайнє значення не включаємо). У циклі ми накопичуємо лічильник. Що це означає? На
першому кроці циклу спочатку обчислюється права частина виразу, тобто total + i.
Змінна total на першому кроці дорівнює 0 (присвоїли їй значення 0 перед початком циклу),
змінна i на першому кроці містить значення 1 (перше значення з діапазону), таким чином,
права частина буде дорівнює значенню 1 і це значення присвоїти лівій частині виразу, тобто
змінній total.
На другому кроці total вже буде дорівнює значенню 1, i – містити значення 2, тобто
права частина виразу буде дорівнює 3, це значення присвоїли знову total і т.д. поки не
дійдемо до кінця діапазону. У підсумку в total після виходу з циклу буде міститися шукана
сума!
В Python є більш красиве рішення даної задачі:
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(2, 10, 2 ))
[2, 4, 6, 8]
>>>
>>>
======== RESTART: C: /Python35-32/myprog.py
====== [4, 10, 5, -1.9 ]
[8, 20, 10, -3.8]
>>>
Необхідно пройти в циклі по всіх елементах списку lst, для цього перебираються і
змінюються послідовно елементи списку через вказівку їх індексу. Як аргумент range
задається довжина списку. У цьому випадку створюється діапазон буде від 0 до
len(lst)- 1. Python не включає крайній елемент діапазону, тому що довжина списку
завжди на 1 більше, ніж індекс останнього його елемента, тому що індексація починається з
нуля.
>>> a = []
>>> for i in range(1,15):
a.append (i)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8 , 9, 10, 11, 12, 13, 14]
>>>
У наступному прикладі вибираємо з діапазону всі числа від 1 до 14, зводимо їх в квадрат
і відразу формуємо з них новий список:
В Python є цікава функція map, яка дозволяє створювати новий список на основі
існуючого списку:
Функція map приймає в якості аргументів ім'я функції і список (або рядок). Кожен
елемент списку (або рядка) подається на вхід функції, і результат роботи функції додається
як елемент нового списку. Отримати результат виклику функції map можна через цикл for
чи функцію list. Функції, які приймають на вхід інші функції, називаються функціями
вищого порядку.
В даному прикладі функція range виступає як лічильник числа повторень (цикл for
спрацює рівно 5 разів). Зверніть увагу, що при формуванні нового списку змінна i не
використовується. В результаті п'ять разів буде проведений виклик функції randint, яка
згенерує ціле випадкове число з інтервалу, і вже це число буде додано в новий список.
Перейдемо до ручного введення значень для списку. Задамо довжину списку і введемо з
клавіатури всі його значення:
>>>
=== ===== RESTART: C: \ Python35-32 \ myprog.py ========
3
4
2
1
У цьому прикладі range знову виступає як лічильник числа повторень, а саме – задає
довжину списку.
Тепер запишемо рішення цього завдання через спискові включення в один рядок:
Тіло циклу виконується поки вираз є істиною, або поки не вийшли по break.
Визначимо кількість студентів:
students = 3
while students> 0:
print(students)
students = students - 1
>>>
==== ===== RESTART: C: \ Python35-32 \ 5_3.py ==========
3
2
1
>>>
У прикладі цикл while виконується до тих пір, ПОКИ число студентів в умові додатнє.
На кожному кроці циклу ми змінну students зменшуємо на 1, щоб не піти в нескінченний
while True:
text = input("Введіть число або стоп для виходу: ")
if text == "стоп":
print("Вихід з програми! До зустрічі!")
break # інструкція виходу з циклу
elif text == '1':
print("Число 1")
else:
print("Що це?!")
>>>
============ RESTART: C: \ Python35 -32 \ 5_4.py ===========
Введіть число або стоп для виходу: 4
Що це ?!
Введіть число або стоп для виходу: 1
Число 1
Введіть число або стоп для виходу: стоп
Вихід з програми! До зустрічі!
>>>
s = 'aa3aBbb6ccc'
total = 0
for i in range(len(s)):
if s[i].isalpha(): # посимвольно перевіряємо наявність літери
continue # інструкція переходу до наступного кроку циклу
total = total + int(s[i]) # накопичуємо суму, якщо зустрілася цифра
print("сума чисел:",total)
Результат виконання:
>>> my_range
<function my_range at 0x02DF6228>
>>> ranger = my_range (1, 5)
>>> ranger
<generator object my_range at 0x02E00450>
>>> for i in ranger: print(i)
1
2
3
4
>>>
>>>
======= RESTART: C: \ Python35-32 \ 5_7.py ======
i= 1 j= 5
i= 1 j= 6
i= 1 j= 7
i= 1 j= 8
i= 2 j= 5
i= 2 j= 6
i= 2 j= 7
i= 2 j= 8
i= 3 j= 5
i= 3 j= 6
i= 3 j= 7
i= 3 j= 8
for i in lst:
print(i)
>>>
====== RESTART: C: \ Python35-32 \ 5_8.py =======
[1, 2, 3]
[4, 5, 6]
>>>
У прикладі за допомогою циклу for перебираються всі елементи списку, які також є
списками.
Якщо ми хочемо дістатися до елементів вкладених списків, то доведеться
використовувати вкладений цикл for:
123
456
>>>
Інструкції циклів можуть мати відгалуження else. Воно виконується, коли цикл
виконав перебір до кінця (в разі for) або, коли умова стає помилковою (в разі while),
але не в тих випадках, коли цикл переривається по break.
Розглянемо наступний приклад розкладання числа на множники:
>>>
======== RESTART: C: \ Python35-32 \ 5_10.py =========
2 - просте число
3 - просте число
4 дорівнює 2 * 2
5 - просте число
6 дорівнює 2 * 3
7 - просте число
8 дорівнює 2 * 4
9 дорівнює 3 * 3
>>>