Python: цикл while
В Python мы используем цикл while для повторения блока кода до тех пор, пока не будет выполнено определённое условие. Например,
number = 1
while number <= 3:
print(number)
number = number + 1
Вывод
1
2
3
В приведённом выше примере мы использовали цикл while для вывода чисел от 1 до 3. Цикл выполняется до тех пор, пока условие number <= 3 истинно (True).
Синтаксис цикла while
while condition:
# тело цикла while
Здесь:
Цикл
whileвычисляет condition — логическое выражение.Если условие истинно (
True), выполняется тело цикла while. Затем условие вычисляется снова.Этот процесс продолжается до тех пор, пока условие не станет ложным (
False).Как только условие становится
False, цикл завершается.
Совет
Мы должны обновлять переменные, используемые в condition, внутри цикла, чтобы оно в конце концов стало False. Иначе цикл будет работать вечно, образуя бесконечный цикл.
Блок-схема цикла while в Python
Пример: цикл while в Python
# Печатаем числа, пока пользователь не введёт 0
number = int(input('Enter a number: '))
# итерируем, пока пользователь не введёт 0
while number != 0:
print(f'You entered {number}.')
number = int(input('Enter a number: '))
print('The end.')
Вывод
Enter a number: 3
You entered 3.
Enter a number: 1
You entered 1.
Enter a number: -4
You entered -4.
Enter a number: 0
The end.
Вот как работает приведённая выше программа:
Она просит пользователя ввести число.
Если пользователь вводит число, отличное от 0, оно выводится.
Если пользователь вводит 0, цикл завершается.
Бесконечный цикл while
Если условие цикла while всегда истинно (True), цикл работает непрерывно, образуя бесконечный цикл while. Например,
age = 32
# условие всегда истинно
while age > 18:
print('You can vote')
Вывод
You can vote
You can vote
You can vote
.
.
.
Приведённая выше программа эквивалентна:
age = 32
# условие всегда истинно
while True:
print('You can vote')
Подробнее о цикле while в Python
Цикл while в Python с оператором break
Мы можем использовать оператор break внутри цикла while для немедленного завершения цикла без проверки условия. Например,
while True:
user_input = input('Enter your name: ')
# завершаем цикл, когда пользователь вводит end
if user_input == 'end':
print(f'The loop is ended')
break
print(f'Hi {user_input}')
Вывод
Enter your name: Kevin
Hi Kevin
Enter your name: end
The loop is ended
Здесь условие цикла while всегда True. Однако если пользователь вводит end, цикл завершается из-за оператора break.
Цикл while в Python с блоком else
В Python цикл while может иметь необязательный блок else, который выполняется один раз, когда условие цикла становится False. Например,
counter = 0
while counter < 2:
print('This is inside loop')
counter = counter + 1
else:
print('This is inside else block')
Вывод
This is inside loop
This is inside loop
This is inside else block
Здесь, на третьей итерации, counter становится 2, что завершает цикл. Затем выполняется блок else и печатается This is inside else block.
Примечание
Блок else не выполнится, если цикл while завершается оператором break.
Цикл for vs цикл while в Python
Цикл for обычно используется в последовательности, когда количество итераций известно. Например,
# цикл выполняется 4 раза
for i in range(4):
print(i)
Вывод
0
1
2
3
Цикл while обычно используется, когда количество итераций неизвестно. Например,
while True:
user_input = input("Enter password: ")
# завершаем цикл, когда пользователь вводит exit
if user_input == 'exit':
print(f'Status: Entry Rejected')
break
print(f'Status: Entry Allowed')
Вывод
Enter password: Python is Fun
Status: Entry Allowed
Enter password: exit
Status: Entry Rejected