Оригінальна публікація: 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().

Дякую, що прочитали та щасливого програмування!