Цикл while

Допустим, нам необходимо напечатать значения квадратов натуральных чисел. Скажем, от 1 до 10 (квадрат числа - это число, умноженное само на себя).

Можно это сделать по-простому:

print(1 ** 2)
print(2 ** 2)
print(3 ** 2)
print(4 ** 2)
print(5 ** 2)
print(6 ** 2)
print(7 ** 2)
print(8 ** 2)
print(9 ** 2)
print(10 ** 2)

И это даже будет работать. Но, во-первых, а если мы захотим таблицу до 100? А до 10000? Нам же жизни не хватит всё это писать. А во-вторых, мы разве для того изучаем программирование, чтобы руками все числа забивать?

Для того, чтобы не забивать каждое число, в программировании придуманы циклы. Цикл — разновидность управляющей конструкции, предназначенная для организации многократного исполнения набора инструкций (определение из Википедии).

Нам как раз многократное повторение (возведения числа в квадрат и печать этого квадрата) и нужно.

И начнём мы знакомство с самого простого в Python цикла - цикла while.

Синтаксис блока:

while УСЛОВИЕ:
    ТЕЛО_ЦИКЛА

Выполняет тело цикла до тех пор, пока условие цикла истинно. Что означает УСЛОВИЕ? Да ровно то же самое, что и у оператора if, без каких-либо дополнительных ограничений.

ТЕЛО_ЦИКЛА - это блок кода (одна, или несколько, или много строк кода, другие, вложенные блоки, и т.д.)

Например, значения квадратов может быть распечатаны так:

number = 1
while number <= 10:
    print(number ** 2)
    number = number + 1

Разберём пример построчно.

  1. number = 1 - присваиваем переменной number значение 1. Это наша точка старта внутри цикла.
  2. while number <= 10: - означает, что блок внутри будет выполняться до тех пор, пока значение number будет оставаться меньше либо равно 10.
  3. print(number ** 2) - печатаем квадрат числа.
  4. number = number + 1 - увеличиваем значение переменной number на 1.
Строка number = number + 1 очень важна! Без неё условие while number <= 10: всегда будет истинным, а значит, цикл никогда не завершится (такой цикл ещё называют бесконечным). Следовательно, никогда не завершится и программа, и её придётся завершить принудительно (например, с помощью Ctrl+C).

После выполнения строк 1 - 4 выполнение переходит на строку 2, в которой снова проверяется условие number <= 10. После строки 4 переменная number стала равна 2. Это всё ещё не больше 10, поэтому цикл выполняется снова (он, собственно, поэтому и называется циклом).

После следующего выполнения number уже станет равным 3, и цикл выполнится ещё раз. И так 10 раз, после последнего из которых, number станет равным 11, и условие в строке 2 станет ложным. В таком случае выполнение программы пойдёт дальше после строки 4 (а поскольку у нас в этой программе после строки 4 ничего нет, то программа закончит своё выполнение).

Цикл while в Python - практически копия цикла while из других языков программирования. Однако аналог do ... while в Python отсутствует (его, конечно, можно написать с помощью различных техник, но это немного сложнее)