Цикл while
Представьте, что нужно вывести числа от 1 до 100. Можно написать print() сто раз, но это займёт целую вечность, а менять что-то потом будет ещё хуже. Программы постоянно повторяют подобную работу: проходят по всем ученикам в списке, проверяют каждый товар в магазине или перерисовывают экран игры 60 раз в секунду. Для этого и нужны циклы. Цикл — это кусок кода, который выполняется снова и снова.
Самый простой цикл — while. Он повторяет блок кода, пока его условие истинно:
number = 1
while number <= 5:
print(number)
number += 1Вывод:
1
2
3
4
5Цикл while похож на if: ключевое слово, условие, двоеточие и блок кода с отступом. Разница в том, что if выполняет свой блок не более одного раза, а while раз за разом возвращается к условию. Шаг за шагом:
- Программа создаёт
numberсо значением1. - Она проверяет условие
number <= 5. Оно равноTrue, поэтому программа выполняет блок: выводит1, аnumber += 1увеличиваетnumberдо2. - Она возвращается к условию.
2 <= 5по-прежнему равноTrue, поэтому она выводит2и увеличиваетnumberдо3. - И так далее, пока
numberне станет равным6. Тогда условие равноFalse, цикл заканчивается, и программа продолжает работу с кодом после цикла.
Каждое выполнение блока называется итерацией. В этом цикле пять итераций. Чтобы вывести числа до 100, достаточно заменить 5 на 100.
Какие строки относятся к циклу? Как и в случае с if, те, что с отступом. Строка под циклом без отступа выполняется только один раз, когда цикл уже закончился:
number = 1
while number <= 3:
print(number)
number += 1
print("Готово")1
2
3
ГотовоОстерегайтесь циклов, которые никогда не заканчиваются. Если забыть строку number += 1 или не поставить для неё отступ (тогда она окажется после цикла), number останется равным 1, условие всегда будет истинным, и цикл будет бесконечно выводить 1. Это называется бесконечным циклом. В этих упражнениях такая программа останавливается через 5 секунд с сообщением Программа работала слишком долго и была остановлена. Нет ли в ней бесконечного цикла? Если вы его увидели, проверьте, что цикл изменяет переменную из своего условия, чтобы в какой-то момент условие стало ложным.
Задание
- 1
Создайте переменную
numberсо значением10. Цикл будет считать с её помощью. - 2
Ниже напишите цикл
while, который работает, покаnumberменьше или равно20. Внутри цикла выведитеnumber, а затем увеличьте его на 1. Программа выведет числа от 10 до 20, каждое на отдельной строке. - 3
Теперь измените в своём коде одно число так, чтобы цикл выводил все числа от 10 до 100.