Цикл while
В предыдущих уроках мы говорили о цикле for
, который выполнялся известное количество раз. Но в некоторых задачах это значение нам заранее неизвестно. Для их решения нам понадобится цикл while
(while - "пока" в переводе с английского), который работает до тех пор, пока заданное условие истинно.
Структура цикла while
следующая:
while условие:
блок кода
Рассмотрим программу, которая раз выводит на экран Python для ЕГЭ
:
for i in range(5):
print('Python для ЕГЭ')
С помощью цикла while
можно задать ту же самую логику:
i = 0
while i < 5:
print("Python для ЕГЭ")
i += 1
Обратите внимание на то, что если в цикле for
переменная i
меняется автоматически, то в цикле while
нам приходится прописывать эти изменения вручную.
Важно отметить, что любую программу с циклом for
можно переписать с использованием цикла while
, но не всегда это рационально.
Рассмотрим задачу:
Необходимо считать с клавиатуры неизвестное количество чисел и найти их сумму, а признаком окончания ввода является .
Программа для решения этой задачи может выглядеть так:
s = 0
num = int(input())
while num != 0:
s += num
num = int(input())
print(s)
В конструкции
while num != 0:
s += num
num = int(input())
блок команд внутри цикла выполняется до тех пор, пока условие истинно, в данном случае пока num
не равен нулю:
- сначала выполняется проверка условия
num != 0
- если условие истинно (т.е.
num
не равен нулю), к s
прибавляется значение num
- в
num
"считывается" очередное число
- шаги 1-3 повторяются до тех пор, пока условие истинно (т.е. пока не будет введён )
Строка перед циклом
num = int(input())
необходима для считывания первого числа. Без неё переменная num
не определена, и потому при выполнении условия num != 0
произойдет ошибка.
Обратите внимание на то, что количество итераций в цикле while
будет зависеть от того, сколько раз выполнится условие.
Возможна ситуация, в которой цикл while
не выполнится ни разу:
a = 10
while a > 20:
print("Этот текст никогда не выведется")
Здесь условие a > 20
не выполнится, поэтому заход в тело цикла не произойдет.
А в приведенном ниже случае цикл while
будет выполняться бесконечно:
i = 0
while i < 10:
print(i)
поскольку i
никак в теле цикла не меняется, и потому условие i < 10
будет всегда истинно.
Оператор break
можно использовать и при работе с циклом while
.
Приведённый ниже код:
num = 1
while num ** 2 < 50:
print(num ** 2)
num += 1
if num == 6:
break
выведет квадраты чисел от до включительно. Квадраты чисел и не будут выведены, поскольку оператор break
досрочно прервет выполнение цикла при num = 6
.