Цикл 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, будут выполняться действия в теле цикла. В данном случае, будет выводиться значение переменной а.
Кроме того, в теле цикла при каждом прохождении значение а становится на единицу меньше.
Запись
a -= 1
может быть немного необычной. Python позволяет использовать такой формат вместоa = a - 1
.Аналогичным образом можно писать:
a += 1
,a *= 2
,a /= 2
.
Так как значение а уменьшается, цикл не будет бесконечным, и в какой-то момент выражение a > 0 станет ложным.
Следующий пример построен на основе примера про пароль из раздела о . В том примере приходилось заново запускать скрипт, если пароль не соответствовал требованиям.
С помощью цикла 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 установлен