Оригінальна публікація: Python Do While – Loop Example

Цикли є корисною і часто використовуваною функціональністю в усіх сучасних мовах програмування.

Якщо ви хочете автоматизувати конкретне повторюване завдання або запобігти написанню повторюваного коду у своїх програмах, найкраще використати цикл.

Цикл — це набір інструкцій, які повторно виконуються, доки відповідають умові. Дізнаємось детальніше про роботу циклів у Python.

Цикли у Python

У Python вбудовано два типи циклів:

  • цикли for
  • цикли while

Ми зосередимось на тому, як створити цикл while та як він працює.

Що таке цикл while у Python?

Загальний синтаксис циклу while у Python виглядає ось так:

while умова:
    виконати цей код у тілі циклу

Цикл while запускатиме частину коду, поки умова істинна (true). Він продовжуватиме виконувати потрібні умови, доки умова не перестане бути істинною (true).

Цикл while завжди перевірятиме умову перед запуском коду.

Якщо умова оцінюється як True, цикл запустить код у тілі циклу.

Наприклад, цей цикл виконується, якщо number менше за 10:

number = 0
while number < 10:
    print(f"Числом є {number}!")
    number = number + 1

Вивід:

Числом є 0!
Числом є 1!
Числом є 2!
Числом є 3!
Числом є 4!
Числом є 5!
Числом є 6!
Числом є 7!
Числом є 8!
Числом є 9!

Спочатку змінна number встановлена на 0.

Python перевіряє умову (number < 10) перед запуском коду. Вона оцінюється як істинна, тому інструкція друку виконується та Числом є 0! виведено на консолі.

Потім number збільшено на 1. Умова знову оцінюється як істинна, і так продовжується, доки number дорівнює 9.

Цього разу виведено Числом є 9! та number збільшується, але number дорівнює 10, тому умова хибна (false) і цикл завершується.

Можливо і таке, що цикл while ніколи не виконується. Ось приклад:

number = 50
while number < 10 :
    print(f"Числом є {number}!")

Оскільки умова завжди хибна (false), код у тілі циклу не виконується.

Не створюйте нескінченні цикли

Як ви побачили у вищеподаному прикладі, зазвичай цикли while супроводжуються змінною, значення якої змінюється протягом циклу. Саме від неї залежить, коли закінчиться цикл.

Якщо ви не додасте цей рядок, ви створите нескінченний цикл.

number не буде збільшена та оновлена. Вона завжди матиме значення 0, і, відповідно, умова number < 10 завжди буде істинною. Це означає, що цикл буде виконуватись вічно.


# не запускайте цей код

number = 0
while number < 10:
    print(f"Числом є {number}!")

Вивід:

Числом є 0!
Числом є 0!
Числом є 0!
Числом є 0!
Числом є 0!
Числом є 0!
Числом є 0!
...

Він виконується нескінченно.

Це те саме:

# не запускайте цей код

while True:
    print("Я завжди істинна")

Що робити в такій ситуації?

Натисніть Control C, щоб уникнути та закінчити цикл.

Що таке цикл do while?

Загальний синтаксис циклу do while в інших мовах програмування виглядає ось так:

do {
  інструкція блоку циклу, яка буде виконана;
  }
while(умова);

Наприклад, цикл do while у C виглядає ось так:

#include <stdio.h>
 
int main(void)
 {
   int i = 10;
   do {
      printf("значення i: %i\n", i);
      i++;
      }
  while( i < 20 );
 }

Унікальним у циклах do while є той факт, що код у блоці циклу буде виконано принаймні один раз.

Код в інструкції виконується один раз, і лише потім перевіряється умова.

Таким чином: спочатку виконується код, а потім перевірка умови.

Якщо умова оцінена як істинна, цикл продовжується.

Бувають випадки, коли код потрібно запустити принаймні один раз. Саме тоді на допомогу приходять цикли do while.

Наприклад, ви пишете програму, яка приймає ввід від користувачів у вигляді додатних чисел. Код запуститься принаймні раз. Якщо користувач введе від’ємне число, цикл продовжиться. Якщо додатне, цикл зупиниться.

Python не має вбудованої функціональності, щоб напряму створити цикл do while. Однак його можливо створити у Python.

Як створити цикл do while у Python

Щоб створити цикл do while у Python, вам потрібно трішки змінити цикл while, аби отримати схожу поведінку до циклів do while в інших мовах програмування.

Нагадую, що цикл do while виконується принаймні раз. Якщо відповідає умова, він виконається ще раз.

А ось цикл while може взагалі не виконатись. Він виконується лише тоді, коли відповідає умова.

Скажімо, ми хочемо, аби рядок коду виконався принаймні раз.

secret_word = "python"
counter = 0

while True:
    word = input("Введіть секретне слово: ").lower()
    counter = counter + 1
    if word == secret_word:
        break
    if word != secret_word and counter > 7: 
        break

Код буде виконано принаймні раз, запитуючи ввід користувача.

Він гарантовано виконається принаймні раз із True. В іншому випадку створиться нескінченний цикл.

Якщо користувач введе правильне секретне слово, цикл завершиться.

Якщо користувач введе неправильне секретне слово більше 7 разів, цикл також завершиться.

Інструкція break дозволяє контролювати потік циклу while та уникнути нескінченного циклу.

break одразу ж припиняє поточний цикл та зупиняє його.

Таким чином ви створюєте схожу дію до циклу do while у Python.

Цикл завжди виконується принаймні раз. Він продовжуватиметься, якщо не відповідає умова та зупиниться, якщо навпаки.

Висновок

Тепер ви знаєте, як створити цикл do while у Python.

Якщо ви хочете дізнатись більше про Python, можете переглянути наше відео «12 Python Projects» на ютубі. Ви зможете побудувати 12 проєктів, орієнтованих для початківців.

freeCodeCamp також має безоплатну сертифікацію з Python, яка допоможе вивчити важливі основи мови.

В кінці курсу ви зможете побудувати п’ять проєктів, щоб попрактикувати вивчене.

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