Цикл 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.