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

Здесь:

  1. Цикл while вычисляет condition — логическое выражение.

  2. Если условие истинно (True), выполняется тело цикла while. Затем условие вычисляется снова.

  3. Этот процесс продолжается до тех пор, пока условие не станет ложным (False).

  4. Как только условие становится False, цикл завершается.

Совет

Мы должны обновлять переменные, используемые в condition, внутри цикла, чтобы оно в конце концов стало False. Иначе цикл будет работать вечно, образуя бесконечный цикл.


Блок-схема цикла while в Python

Блок-схема цикла 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.

Вот как работает приведённая выше программа:

  1. Она просит пользователя ввести число.

  2. Если пользователь вводит число, отличное от 0, оно выводится.

  3. Если пользователь вводит 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

Видео: цикл while в Python