3. Цикл while
При створенні програм не завжди відомо, скільки
разів доведеться повторити заданий набір дій. Для цього
є особливий тип циклів – цикли з умовою.
Наприклад, уявімо, що персонаж комп'ютерної гри
наступив на лаву, і кожну секунду в нього віднімається
5 очок здоров'я. Так буде до тих пір, поки гравець не пе-
рейде на інше місце.
Розробник не знає, скільки ітерацій в такому випад-
ку необхідно пройти, тому для створення циклу вико-
ристовує while (рис. 1).
Рисунок 1
3
Цикл while
4. Цикл while є циклом з умовою. Він відрізняється
від for тим, що спочатку невідомо, скільки разів буде
виконуватися. Однак принцип роботи while дуже схо-
жий з for. Спочатку перевіряється умова, якщо вона
правдива – виконується код в тілі циклу, потім умова
перевіряється знову. Якщо в якийсь момент вона стає
неправдивою, програма виходить з циклу.
Загальний синтаксис while має такой вигляд:
while умовний_вираз:
інструкції
Давайте розглянемо приклад використання циклу в
програмному коді:
# example of the while loop
a = 5
while a<10:
print("Now the value of a: " + str(a)
+ ". But it is less than 10!")
a = a + 1 # Increasing the value of a by 1 in
each iteration
print("That’s it! Now the number a is greater than 10!")
Даний код постійно виводить значення, яке зберіга-
ється у змінній а, потім збільшує його на 1. Так буде до
тих пір, поки а не стане більше 10.
Умови для циклів можна використовувати будь-які:
як прості, так і складні.
4
Урок № 6
5. Безкінечний цикл
Іноді виникає необхідність виконувати певні дії по-
стійно, наприклад набивати м’яч. Без заданої умови та-
кий цикл називається нескінченним.
Розглянемо синтаксис безконечного циклу:
while True:
інструкції
Потрібно бути дуже акуратним при використанні
безкінечних циклів, і використовувати їх тільки в най-
необхідніших випадках! При неправильному застосу-
ванні цей цикл може просто «заморозити» виконання
вашої програми. До того ж в більшості випадків можна
обійтися без такого циклу, створивши відповідну умову.
Оператор break
Оператор break достроково перериває виконання
циклу, наприклад, якщо в коді використовується безкі-
нечний цикл (на прикладі того, що ми розглянули ра-
ніше). Це можна використовувати в тих випадках, коли
виконання програми потрібно перервати, як тільки ви-
конається будь-яка умова.
Припустимо, ви вирішили побити рекорд всесвіт-
ньо відомого футболіста Дієго Марадони і набити голо-
вою м’яч більше 7000 разів. Таким чином, ви починаєте
виконання циклу while, і в змінну a записується ваш
поточний рахунок.
5
Цикл while
6. Як тільки м’яч торкнеться підлоги, цикл завершить-
ся і в змінну більше не будуть додаватися значення (рис.
2).
Так виглядає виконання break в коді (рис. 3):
Рисунок 2
Рисунок 3
6
Урок № 6
7. Оператор continue
Оператор continue ігнорує код, який йде за ним і
продовжує виконання циклу з наступної ітерації, наче
після слова continue і зовсім немає жодного коду (рис.
4).
Візуально це виглядає, як на зображенні (див. рис. 5
на наступній сторінці) і, як ми бачимо, принцип робо-
ти continue значно відрізняється від принципу роботи
break.
Рисунок 4
7
Цикл while
8. Гра “Guess my number”
Ось ви і навчилися працювати з циклами, а тепер
настав час закріпити отримані знання!
Давайте створимо гру Guess my number. Суть гри
досить проста: користувач повинен вгадати число, яке
загадав комп’ютер (рис. 6).
Рисунок 5
Рисунок 6
8
Урок № 6
9. 9
Цикл while
Лістинг 1
import random
print("-------Guess my number-------")
print("You need to guess the number picked by
enigmatic computer!"
"Number is in range from 1 to 10")
magic_number = random.randint(1, 20)
user_number = 0
while user_number != magic_number:
user_number = int(input("Your number: "))
if magic_number > user_number:
print("The magic number is greater than
yours!")
elif magic_number < user_number:
print("The magic number is less than
yours!")
print(f"You guessed it right!
Magic number: {magic_number}")
З’ясуємо, як працює наш код.
Ми підключили модуль random, щоб згенерувати
випадкове число. Як ви пам’ятаєте, бібліотеки потрібно
підключати на самому початку коду.
Також створили змінні magic_number (загаданий
комп’ютером номер) і user_number (номер, який ввів
користувач).
10. 10
Урок № 6
Основу нашої гри становить цикл:
while user_number != magic_number:
Цей цикл необхідний для початку гри. Він буде по-
стійно питати у користувача загадане число, поки той
не вгадає:
while user_number != magic_number:
user_number = int(input("Your number: "))
print(f"You guessed You guessed it right!
Magic number: {magic_number}")
Ми створили спрощений варіант Guess my number.
Звичайно, можна залишити все як є, але давайте
вдосконалимо гру! Додамо інформацію про те, наскіль-
ки користувач близький до потрібного числа. Це можна
зробити, доповнивши цикл умовою if-elif.
11. 11
Цикл while
Тепер ми можемо не тільки перевірити, чи вгадав
користувач число, а й дізнатися, більше воно чи менше
від задуманого:
while user_number != magic_number:
user_number = int(input("Your number: "))
if magic_number < user_number:
print("The magic number is greater than
yours!")
elif magic_number > user_number:
print("The magic number is less than yours!")
print(f"You guessed it right!
Magic number: {magic_number}")