Перейти до змісту

while

Цикл while - це ще один різновид циклу в Python.

У циклі while, як і в if, треба писати умову. Якщо умова є істинною, виконуються дії всередині блоку while. Але, на відміну від if, після виконання коду в блоці, while повертається на початок циклу.

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

Розглянемо приклад:

In [1]: a = 5

In [2]: while a > 0:
   ...:     print(a)
   ...:     a -= 1
   ...:
5
4
3
2
1

Спочатку створюється змінна зі значенням 5.

Потім, у циклі while зазначено умову a > 0. Тобто, поки значення а більше 0, виконуватимуться дії у тілі циклу. У цьому випадку буде відображено значення змінної a.

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

Note

Запис a -= 1 може бути трохи незвичним. Python дозволяє використовувати цей формат замість a = a – 1. Подібним чином можна писати: a += 1, a *= 2, a /= 2.

Оскільки значення а зменшується, цикл не буде нескінченним, і в якийсь момент вираз a > 0 стане хибним.

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

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

username = input("Введіть ім'я користувача: ")
password = input("Введіть пароль: ")

password_correct = False

while not password_correct:
    if len(password) < 8:
        print("Пароль надто короткий\n")
        password = input("Введіть пароль ще раз: ")
    elif username in password:
        print("Пароль містить ім'я користувача\n")
        password = input("Введіть пароль ще раз: ")
    else:
        print(f"Пароль для користувача {username} встановлено")
        password_correct = True

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

Тепер скрипт відпрацьовує так:

$ python check_password_with_while.py
Введіть ім'я користувача: nata
Введіть пароль: nata
Пароль надто короткий

Введіть пароль ще раз: natanata
Пароль містить ім'я користувача

Введіть пароль ще раз: 123345345345
Пароль для користувача nata встановлено