- ru
- Language: en
- Documentation version: latest
while
Цикл while - это еще одна разновидность цикла в Python.
В цикле while, как и в выражении if, надо писать условие. Если условие истинно, выполняются действия внутри блока while. При этом, в отличие от if, после выполнения кода в блоке, while возвращается в начало цикла.
При использовании циклов while необходимо обращать внимание на то, будет ли достигнуто такое состояние, при котором условие цикла будет ложным.
Рассмотрим простой пример:
In [1]: a = 5
In [2]: while a > 0:
...: print(a)
...: a -= 1 # Эта запись равнозначна a = a - 1
...:
5
4
3
2
1
Сначала создается переменная а со значением 5.
Затем, в цикле while указано условие a > 0. То есть, пока значение а больше 0, будут выполняться действия в теле цикла. В данном случае, будет выводиться значение переменной а.
Кроме того, в теле цикла при каждом прохождении значение а становится на единицу меньше.
Note
Запись a -= 1
может быть немного необычной. Python позволяет
использовать такой формат вместо a = a - 1
.
Аналогичным образом можно писать: a += 1
, a *= 2
,
a /= 2
.
Так как значение а уменьшается, цикл не будет бесконечным, и в какой-то момент выражение a > 0 станет ложным.
Следующий пример построен на основе примера про пароль из раздела о конструкции if Пример использования конструкции if/elif/else. В том примере приходилось заново запускать скрипт, если пароль не соответствовал требованиям.
С помощью цикла while можно сделать так, что скрипт сам будет запрашивать пароль заново, если он не соответствует требованиям.
Файл check_password_with_while.py:
# -*- coding: utf-8 -*-
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('Пароль для пользователя {} установлен'.format( username ))
password_correct = True
В этом случае цикл while полезен, так как он возвращает скрипт снова в начало проверок, позволяет снова набрать пароль, но при этом не требует перезапуска самого скрипта.
Теперь скрипт отрабатывает так:
$ python check_password_with_while.py
Введите имя пользователя: nata
Введите пароль: nata
Пароль слишком короткий
Введите пароль еще раз: natanata
Пароль содержит имя пользователя
Введите пароль еще раз: 123345345345
Пароль для пользователя nata установлен