Цикл while

22.08.2022 0 Автор : Марина Николаевна
Цикл while

Цикл while является одной разновидностью циклов наряду с циклом for.

Если цикл for позволяет повторить действие определенное количество раз (for, счетные циклы, counting loops), то цикл while повторяет действие до наступления определенного события (while, условные циклы, conditional loops).

 

 

Цикл while в работе

Рассмотрим структуру цикла while. 

while условие:
       блок кода

Перед блоком команды в языке программирования Python ставится обязательное двоеточие.

Все команды после двоеточия указываются с отступом и до момента, когда следующая строка указывается без отступа.

Команды, которые указываются с отступом после двоеточия называется телом цикла.

Примером использования цикла while является печать определенного слова или фразы указанное количество раз:

i = 0
while i < 5:
    print('Расписание уроков')
    i += 1

В программе выше видно, что словосочетание «Расписание уроков» будет распечатано  5 раз подряд. i  — количество раз печати. Шаг печати — 1, пока количество печатных строк не достигнет 5.

В этой программе цикл while может быть легко заменен циклом for, так как для исполнителя точно определено количество раз печати. Так бывает не всегда. Если нельзя точно сказать, сколько раз необходимо повторить действие, то на помощь приходит цикл for.

Пример применения цикла while

Примером применения цикла while может стать программа считывания чисел и возведения их в квадрат до тех пор, пока не будет введено значение  -5 (минус 5)

Программа будет выглядеть следующим образом:

num = int(input())
while num != -5:
    print('Квадрат вашего числа равен:', num * num)
    num = int(input())

Циклом for  в данном случае воспользоваться не получится, так как неизвество, сколько шагов будет сделано до того момента, пока не будет введено число -5 (минус 5)

num  — переменная. Предлагаем значения переменной для решения задачи и выполняем тело цикла до тех пор, пока введенное число не будет равно  — 5.

В тело цикла входит две команды:

  • напечатать квадрат введенного числа;
  • считать следующее число.

Два момента считается важным:

  • правильная инициализация переменной num;
  • изменение переменной num внутри цикла while
  •  

!!! Если переменную num не изменять внутри цикла, то цикл может стать бесконечным. В этом случае цикл будет повторяться бесконечное количество раз.

Условный цикл while очень похож на условный оператор if.

Разница заключается в том, что в случае с условным оператором соответствующий блок кода будет выполняться только один раз, тогда как с циклом while блок кода будет выполнен многократно.

Замена цикла for на цикл while

!!!  Условный цикл while очень похож на условный оператор if. Разница в том, что в случае с условным оператором соответствующий блок кода будет выполняться только один раз, тогда как с циклом while блок кода будет выполнен многократно.

Сравним две программы, которые выводят числа от 1 до 50.

# используем for
for i in range(51):
    print(i)

В этом цикле переменная i последовательно принимает значения от 0 до 50.

# используем while
i = 0
while i < 51:
    print(i)
    i += 1

Для цикла while,  переменную i вводим самостоятельно и придаем ей начальное значение. Тело цикла while содержит аналогичную инструкцию вывода print(i), однако помимо этого мы самостоятельно увеличиваем значение переменной i на 1.

В случае с циклом for увеличение значения происходит автоматически.

Считывание данных в цикле до стоп-значения

Стоп-значение — это значение, которое пользователь вводит и в этот момент исполнения цикла прекращается.

Рассмотрим программу, которая считывает числа и находит их сумму, пока пользователь не введет слово stop.

text = input()
amount = 0
while text != 'stop':
    num = int(text)
    amount += num
    text = input()
print('Сумма чисел равна', amount)

Такой код довольно часто используется при решении задач.

Бесконечный цикл

Если цикл не может завершиться, то его называют бесконечным циклом. Для того, чтобы этого избежать, в цикл должно что-то сделать проверяемое условие ложным.

Чаще всего бесконечные циклы появляются из-за забывчивости программиста, который забывает прописать внутри цикла условие, при проверки которого, проверяемое условие становится ложным. 

Необходимо избегать бесконечных циклов!

Пример бесконечного цикла:

i = 0
total = 0
while i < 10:
    total += i

Выше указанный код становится бесконечным, так как в теле цикла не происходит изменение переменной.

Цикл while называют циклом с предусловием, так как сначала проверяется условие, а уже затем выполняется тело цикла.