Оригінальна публікація: For Loops in Python – For Loop Syntax Example
Програмування у Python може вимагати повторення певного коду декілька разів.
Написання однакових рядків коду знову й знову вважається поганою практикою. Тут на допомогу приходять цикли.
Завдяки циклам ви можете виконати послідовність інструкцій встановлену кількість разів, поки не відповідатиме певна умова.
Використання циклів у програмі допоможе зберегти час, мінімізувати помилки та уникнути повторень.
У Python існують два типи циклів:
- цикли
for
- цикли
while
У цій публікації ви дізнаєтесь про цикли for
.
Якщо хочете дізнатись про цикли while
, перегляньте іншу публікацію на цю тему.
За роботу!
Що таке цикл for
у Python?
Цикл for
можна використати, щоб ітерувати над ітерабельним об’єктом декілька разів.
Ітерабельним об’єктом у Python є будь-який об’єкт, який можна використати у послідовності та над яким можна виконати цикл.
У Python існує безліч ітерабельних об’єктів, а до найпоширеніших належать:
Цикл for
ітерує над кожним елементом у послідовності по порядку.
Він також виконує однаковий блок коду для кожного елемента.
Завдяки цій поведінці цикл for
корисний, якщо:
- ви знаєте скільки разів потрібно виконати блок коду;
- ви хочете виконати однаковий код для кожного елемента у наданій послідовності.
Головна відмінність між циклами for
та while
:
- цикл
for
здійснює інструкції надану кількість разів; - цикл
while
виконує ту саму дію, поки не відповідатиме умова.
Розбір синтаксису циклу for
у Python
Якщо ви працювали з іншими мовами програмування, ви помітили, що цикл for
у Python відрізняється від циклів for
в інших мовах.
Наприклад, у JavaScript загальний синтаксис циклу for
виглядає так:
for (let i = 0; i < 5; i++) {
console.log('Hello World');
}
- Ініціалізація
i = 0
, яка поводиться як початкова точка. - Потрібна умова
i < 5
, щоб цикл продовжував виконуватись. - Оператор інкременту
i++
. - Фігурні дужки та тіло циклу
for
, що містить дію, яку потрібно виконати.
Цикл for
у Python має коротший, читабельніший та практичніший синтаксис.
У Python загальний синтаксис циклу for
виглядає так:
for placeholder_variable in sequence:
# код, який щось робить
Розберемо його:
- Щоб розпочати цикл
for
, спершу потрібно використати ключове словоfor
. placeholder_variable
є довільною змінною. Вона ітерує над послідовністю та вказує на кожен елемент кожної ітерації. Ця змінна може мати будь-яке ім’я.- Після
placeholder_variable
використовуємо ключове словоin
, яке вказуєplaceholder_variable
виконати цикл над елементами послідовності. sequence
(укр. послідовність) може бути списком, кортежом, словником, набором, рядком чи іншим типом ітератора в Python. Не забудьте додати:
вкінці!- Потім додаємо новий рядок і потрібно додати один рівень відступу. Одним рівнем відступу в Python є
4
пробіли. - Вкінці вам потрібно додати тіло циклу
for
. Тут ви вказуєте дію, яку хочете виконати з кожним елементом послідовності.
Цикл for
для рядка в Python
Як згадувалося вище, рядки є ітерабельними. Вони є послідовністю символів, тобто над ними можна ітерувати, символ за символом.
Візьмемо наступний приклад:
for character in "Python":
print(character)
# вивід
# P
# y
# t
# h
# o
# n
У прикладі вище я виконала цикл на рядку Python та надрукувала окремі літери на консолі.
Ви б отримали такий самий результат, якщо зберегли рядок у змінній:
fave_language = "Python"
for character in fave_language:
print(character)
# вивід
# P
# y
# t
# h
# o
# n
Цикл for
для списку в Python
Скажімо, ви маєте список мов програмування і хочете виконати ітерацію, а також надрукувати кожен елемент послідовності:
programming_languages = ["Python", "JavaScript", "Java", "C++"]
# ітерація над кожним елементом всередині списку
for language in programming_languages:
print(language)
# вивід
# Python
# JavaScript
# Java
# C++
Як згадувалось раніше, iterator_variable
можна назвати як завгодно. В цьому разі я назвала її language
.
Змінна language
відноситься до кожного запису в послідовності.
Ключове слово in
, коли використовується з циклом for
, вказує, що ітерує над кожним елементом у послідовності.
Під час першої ітерації циклу language
вказує на перший елемент у списку, яким є Python
.
Інструкції всередині тіла циклу виконуються, тому на консолі надруковано Python
.
Під час другої ітерації змінна оновлюється та вказує на другий елемент JavaScript
. Виконуються ті самі інструкції всередині тіла циклу.
Така сама процедура виконується для всіх елементів у списку, доки цикл не досягне кінця, і кожен елемент не буде ітеровано.
Цикл for
для кортежу в Python
Спробуємо ітерувати над усіма елементами всередині кортежу.
my_info = ("John", "Doe", 26, "Software Engineer")
for data in my_info:
print(data)
# вивід
# John
# Doe
# 26
# Software Engineer
Як бачите, цикл for
одинаковий для кортежів та списків.
Цикл for
для словника в Python
Тепер візьмемо словник та ітеруємо над парами «ключ-значення»:
my_info = {
'name':'John Doe',
'job title':'software engineer',
'country':'USA'
}
for info in my_info:
print(info)
# name
# job title
# country
Якщо я використаю той самий синтаксис, що й для рядків, списків, кортежів і наборів зі словником, я отримаю лише ключі.
Щоб виконати цикл над парами «ключ-значення» у словнику, потрібно виконати розпаковку кортежу, вказавши дві змінні.
Вам також потрібно використати метод .items()
, щоб виконати цикл над ключами і значеннями:
my_info = {
'name':'John Doe',
'job title':'software engineer',
'country':'USA'
}
for key,value in my_info.items():
print(key,":",value)
# вивід
# name : John Doe
# job title : software engineer
# country : USA
Що відбудеться, якщо не використати метод .items()
?
my_info = {
'name':'John Doe',
'job title':'software engineer',
'country':'USA'
}
for key,value in my_info:
print(key,":",value)
# вивід
# Traceback (most recent call last):
# File "main.py", line 7, in <module>
# for key,value in my_info:
# ValueError: too many values to unpack (expected 2)
Ви отримаєте ValueError
, оскільки Python очікує пару. Ключі та значення у Python нероздільні, вони йдуть рука об руку.
Як писати інструкцію break
в циклі for
у Python
Цикл for
у Python не зупиниться, поки не дійде до кінця.
Однак іноді потрібно мати більше контролю над потоком циклу for
.
Наприклад, коли вам потрібно зупинити цикл передчасно, якщо відповідає певна умова.
Для цього можна використати інструкцію break
.
Візьмемо наступний приклад:
programming_languages = ["Python", "JavaScript", "Java", "C++"]
for language in programming_languages:
print(language)
if language == "Java":
break
# вивід
# Python
# JavaScript
# Java
У прикладі вище я хотіла зупинити цикл, коли змінна language
вказує на елемент "Java"
.
Коли Python бачить ключове слово break
, він зупиняє дійсний цикл, а код після інструкції не виконується.
Як ви бачили з виводу, на консолі надруковано "Java"
, а цикл зупинено.
Якщо ви хочете зупинити цикл, коли змінна language
вказує на елемент "Java"
, але не хочете друкувати значення на консолі, напишіть наступне:
programming_languages = ["Python", "JavaScript", "Java", "C++"]
for language in programming_languages:
if language == "Java":
break
print(language)
# вивід
# Python
# JavaScript
Як писати інструкцію continue
в циклі for
у Python
Що робити, якщо потрібно пропустити певний елемент?
Інструкція continue
пропускає виконання тіла циклу, якщо відповідає умова.
Візьмемо наступний приклад:
programming_languages = ["Python", "JavaScript", "Java", "C++"]
for language in programming_languages:
if language == "Java":
continue
print(language)
# вивід
# Python
# JavaScript
# C++
У прикладі вище я хотіла пропустити "Java"
зі списку.
Я вказала, що якщо змінна language
вказує на "Java"
, то Python повинен зупинити та пропустити виконання на цьому етапі і перейти до наступного елемента.
Різниця між інструкціями break
та continue
в тому, що інструкція break
зупиняє цикл повністю.
А ось інструкція continue
зупиняє поточну ітерацію та переходить до наступного елемента ітерабельного об’єкта, тобто не зупиняє цикл зовсім.
Як використовувати функцію range()
в циклі for
у Python
Якщо ви хочете виконати цикл певну кількість разів, можете використати вбудовану функцію range()
.
За замовчуванням функція range()
повертає послідовність чисел, починаючи з 0
, збільшуючи на одиницю, закінчуючи вказаним числом.
Синтаксис для цього виглядає так:
range(end)
Аргумент end
є обов’язковим.
Розглянемо наступний приклад:
for i in range(4):
print(i)
# вивід
# 0
# 1
# 2
# 3
У цьому прикладі я вказала range(4)
.
Це означає, що функція почне відлік з 0
, кожної ітерації збільшуватиметься на 1
та закінчуватиметься на 3
.
Майте на увазі, що вказаний діапазон не враховує останнє число! Тому range(4)
закінчуватиметься на 3
, а не 4
.
Сюди входитимуть значення від 0
до 3
, а не від 0
до 4
.
Що робити, якщо хочете вказати діапазон двох чисел, який не розпочинається з 0
?
Ви можете передати другий додатковий аргумент start
, щоб вказати початкове число.
Синтаксис для цього виглядає так:
range(start, end)
Якщо вам потрібен діапазон значень від 10
до 20
включно, напишіть діапазон range(10,21)
:
for i in range(10,21):
print(i)
# вивід
# 10
# 11
# 12
# 13
# 14
# 15
# 16
# 17
# 18
# 19
# 20
Знову ж таки, range(10,21)
не враховує 21
.
Зрештою, якщо ви хочете збільшувати не на 1
, можна вказати третій додатковий параметр step
.
Синтаксис для цього виглядає так:
range(start, end, step)
Варто вказати, що step
може бути додатним або від’ємним числом, але не 0
.
Візьмемо наступний приклад:
for i in range(10,21,2):
print(i)
# вивід
# 10
# 12
# 14
# 16
# 18
# 20
У цьому прикладі я хотіла врахувати значення від 10
до 20
і збільшити їх на 2
.
Я зробила це, вказавши значення інкременту 2
.
Візьмемо інший приклад.
Скажімо, ви маєте список елементів і хочете щось зробити з елементами, залежно від того, наскільки довгий список.
Для цього ви можете використати range()
та передати довжину свого списку як аргумент.
Використайте функцію len()
, щоб вирахувати довжину списку.
programming_languages = ["Python", "JavaScript", "Java", "C++"]
programming_languages_length = len(programming_languages)
for languages in range(programming_languages_length):
print("Hello World")
# вивід
# Hello World
# Hello World
# Hello World
# Hello World
Висновок
Сподіваюсь, ця публікація допомогла розібратись із циклом for
у Python.
Ви дізнались, як писати цикл for
, щоб ітерувати над рядками, списками, кортежами та словниками.
Ви побачили, як використовувати інструкції break
та continue
, щоб контролювати потік циклу for
.
Ви також побачили, як вказати діапазон чисел для циклу for
за допомогою функції range()
.
Дякую, що прочитали та щасливого програмування!