Цикли for
Останнє оновлення 2026-05-16 | Редагувати цю сторінку
Огляд
Питання
- How can I make a program do many things?
Цілі
- Пояснити, для чого зазвичай використовуються цикли for.
- Проаналізувати виконання простого (не вкладеного) циклу та правильно вказати значення змінних у кожній ітерації.
- Написати цикли for, які використовують шаблон накопичувача для агрегування значень.
Цикл for виконує команди один раз для кожного значення в колекції.
- Виконання обчислень над елементами списку окремо є таким самим
виснажливим, як і робота зі змінними на кшталт
pressure_001,pressure_002і так далі. - Цикл for вказує Python, що треба виконати набір інструкцій для кожного елемента списку, рядка або іншої колекції.
- “для кожного елемента в цій групі виконайте ці операції”
- Цей цикл
forє еквівалентним наступному:
- І результат циклу
forє таким:
ВИХІД
2
3
5
Цикл for складається з колекції, змінної циклу та тіла
циклу.
- Колекція
[2, 3, 5]- це те, що опрацьовується в циклі. - Тіло циклу,
print(number), визначає, що робити для кожного значення в колекції. - Змінна циклу,
number, змінюється для кожної ітерації циклу.- Це - “поточне значення”.
Перший рядок циклу for має закінчуватися двокрапкою, а
тіло циклу має бути з відступом.
- Двокрапка в кінці першого рядка вказує на початок блоку операторів.
- Python використовує відступ, а не
{}абоbegin/end, щоб показати вкладеність.- Будь-який послідовний відступ є допустимим, але майже усі використовують чотири пробіли.
ПОМИЛКА
IndentationError: expected an indented block
- Відступи у Python завжди важливі.
ПОМИЛКА
File "<ipython-input-7-f65f2962bf9c>", line 2
lastName = "Smith"
^
IndentationError: unexpected indent
- Ця помилка може бути виправлена шляхом видалення зайвих пробілів на початку другого рядку.
Змінні циклу можна називати як завгодно.
- Як і всі інші змінні, змінні циклу:
- Створюються за потреби
- Не несуть смислового навантаження: їх імена можуть бути будь-якими.
Тіло циклу може містити багато операторів.
- Але жоден цикл не повинен мати довжину більше кількох рядків.
- Людям важко запам’ятати великі фрагменти коду.
ВИХІД
2 4 8
3 9 27
5 25 125
Використовуйте range для перебору послідовності
чисел.
- Вбудована функція
rangeстворює послідовність чисел.- Не список: номери виробляються на вимогу, щоб зробити цикл у великих діапазонах більш ефективним.
-
range(N)є набором чисел 0..N-1- Точні індекси списку або рядка символів довжиною N
ВИХІД
a range is not a list: range(0, 3)
0
1
2
The Accumulator pattern turns many values into one.
- A common pattern in programs is to:
- Встановлення початкового значення для накопичувальної змінної : нуль, порожній рядок або порожній список.
- Оновлення змінної значеннями з колекції.
PYTHON
# Знайти суму перших 10 цілих чисел.
total = 0
for number in range(10):
total = total + (number + 1)
print(total)
ВИХІД
55
- Оператор
total = total + (number + 1)інтерпретується наступним чином:- Додати 1 до поточного значення змінної циклу
number. - Додати це до поточного значення змінної-накопичувача
total. - Присвойте це змінній
total, замінивши поточне значення.
- Додати 1 до поточного значення змінної циклу
- Ми маємо додавати
number + 1, тому щоrangeгенерує значення 0..9, а не 1..10.
Класифікація помилок
Чи є помилка відступу синтаксичною чи помилкою виконання?
IndentationError є синтаксичною помилкою. Неможливо запустити програми з синтаксичними помилками. Програма з помилкою виконання може запуститися, але помилка з’являється за певних умов.
| Номер рядка | Значення змінних |
|---|---|
| 1 | total = 0 |
| 2 | total = 0 char = ‘t’ |
| 3 | total = 1 char = ‘t’ |
| 2 | total = 1 char = ‘i’ |
| 3 | total = 2 char = ‘i’ |
| 2 | total = 2 char = ‘n’ |
| 3 | total = 3 char = ‘n’ |
Практика накопичення. (continued)
Створіть акронім: За допомогою циклу for сформуйте
акронім "RGB" зі списку
["red", "green", "blue"].
Hint: You may need to use a string method to properly format the acronym.
Накопичувальна сума
Виявлення помилок в іменах змінних
- Read the code below and try to identify what the errors are without running it.
- Запустіть код і прочитайте повідомлення про помилку. Як ви думаєте,
який це тип
NameError? Is it a string with no quotes, a misspelled variable, or a variable that should have been defined but was not? - Виправте помилку.
- Повторюйте кроки 2 і 3, доки не виправите всі помилки.
- Імена змінних Python чутливі до регістру:
numberтаNumberвказують на різні змінні. - Змінна
messageмає бути ініціалізована як порожній рядок. - We want to add the string
"a"tomessage, not the undefined variablea.
- Цикл for виконує команди один раз для кожного значення в колекції.
- Цикл
forскладається з колекції, змінної циклу та тіла циклу. - Перший рядок циклу
forмає закінчуватися двокрапкою, а тіло циклу має бути з відступом. - Відступи у Python завжди важливі.
- Loop variables can be called anything (but it is strongly advised to have a meaningful name to the looping variable).
- Тіло циклу може містити багато операторів.
- Use
rangeto iterate over a sequence of numbers. - The Accumulator pattern turns many values into one.