Циклы — управляющая конструкция, которая дает возможность выполнять определенный участок кода многократно.
Цикл while — выполняет блок кода, пока проверяемое условие выполняется.
Синтаксис цикла while
while условие: тело цикла
Как работает цикл while в Python
i = 1 while i < 5: print(i) i += 1 #1 #2 #3 #4
i = 1
— переменная, которая является счетчиком для цикла while.
Далее идет обозначение цикла — while
и условие выполнения цикла — i < 5
.
Т.к. i = 1
, то условие верно 1 < 5 (True) и цикл начинает выполняться.
Выводится значение переменной i
(#1), далее значение переменной i
увеличивается на 1 и цикл повторяется сначала.
Теперь i = 2
, т.к. мы увеличили ее на 1 в последней инструкции цикла.
Проверяется условие 2 < 5, условие верно (True) и цикл продолжает выполняться.
Печатается значение переменной i
(#2), далее значений переменной i
снова увеличивается на 1 и теперь i = 3
.
Снова происходит проверка условия цикла и так по кругу.
После того, как условие не выполняется — цикл останавливается.
i = 1 while i < 5: print(f'Условие верно i = {i}, {i} < 5') i += 1 #Условие верно i = 1, 1 < 5 #Условие верно i = 2, 2 < 5 #Условие верно i = 3, 3 < 5 #Условие верно i = 4, 4 < 5
Бесконечный цикл while
В прошлом примере у нас была переменная i
, которая была счетчиком цикла и увеличивала свое значение в результате каждой итерации цикла.
Благодаря которой цикл остановился, т.к. условие перестало выполняться.
Если такой переменной не будет, или условие будет некорректное, то цикл может стать бесконечным. Т.е. будет выполняться бесконечное число раз:
i = 1 while i >= 1: print(i) i += 1 #1 #2 #3 #4 ...
i = 1 while True: print(i) i += 1 #1 #2 #3 #4 ...
В этих примерах условие всегда истинно и поэтому цикл становится бесконечным.
Но бесконечные циклы, также бывают полезными, например, когда мы заранее не знаем, сколько раз нужно выполнить цикл, но важно, чтобы цикл был контролируемым.
Т.е. чтобы мы могли сделать в нужный момент условие ложным False
и остановить цикл.
Else в цикле while
Оператор Else
в цикле while абсолютно идентичен оператору Else
в условном if-else.
Инструкции выполняются в нем, если условие цикла while — False
.
i = 1 while i < 5: print(f'Условие верно i = {i}, {i} < 5') i += 1 else: print(f'Условие неверно i = {i}, {i} < 5') #Условие верно i = 1, 1 < 5 #Условие верно i = 2, 2 < 5 #Условие верно i = 3, 3 < 5 #Условие верно i = 4, 4 < 5 #Условие неверно i = 5, 5 < 5
В этом примере при каждой итерации цикла значение переменной i
, которая является счетчиком, увеличиваться на 1.
И когда значение i
становится 5, условие цикла не выполняется, т.к. оно ложно, цикл завершается и выполняется блок Else
.
Управление циклом — Break и Continue
Иного бывает необходимо прервать цикл, при выполнении какого-либо условия или же пропустить итерацию цикла. С этим помогают операторы управления циклом.
Break
Оператор Break
останавливает цикл и Python идет выполнять следующие после цикла инструкции.
i = 1 while True: # условие всегда истинно if i == 5: # если i равно 3, то вызываем оператор break break # оператор break прерывает выполнение цикла print(i) i += 1 #1 #2 #3 #4
Мы создали бесконечный цикл, т.к. условие цикла всегда True
. Но внутри цикла создали отдельно условие, при котором цикл прерывается с помощью оператора break
.
Continue
Оператор Continue
— пропускает 1 итерацию цикла, без полной остановки цикла.
К примеру, мы создаем цикл, в котором хотим вывести все четные числа от 1 до 10:
i = 1 while i <= 10: if i % 2 != 0: i += 1 continue print(i) i += 1 #2 #4 #6 #8 #10
Создаем цикл от 1 до 10, со счетчиком i
, который изначально равен 1.
Далее в этом цикле каждый раз проверяем условие — если остаток от деления i
на 2 неравно 0, значит это число нечетное, увеличиваем переменную-счетчик i
на единицу и с помощью оператора continue
пропускаем итерацию.
Т.е. не печатаем значение переменной, а переходим назад к условию цикла.
Цикл while в одну строку
Python дает возможность записи цикла while в одну строку:
i = 1 while i < 5: print(i); i += 1 #1 #2 #3 #4
Полностью аналогичен стандартной записи:
i = 1 while i < 5: print(i) i += 1 #1 #2 #3 #4
Вложенные циклы while
Без проблем можно размещать один цикл while внутри другого.
К примеру, выведем с помощью вложенных циклов таблицу умножения:
a = 1 while a <= 9: b = 1 while b <= 9: print(a * b, end="\t") b += 1 a += 1 print("") #1 2 3 4 5 6 7 8 9 #2 4 6 8 10 12 14 16 18 #3 6 9 12 15 18 21 24 27 #4 8 12 16 20 24 28 32 36 #5 10 15 20 25 30 35 40 45 #6 12 18 24 30 36 42 48 54 #7 14 21 28 35 42 49 56 63 #8 16 24 32 40 48 56 64 72 #9 18 27 36 45 54 63 72 81
Задачки на с циклом while
Сумма чисел
Пользователь вводит целые числа до тех пор, пока не введет 0. Посчитаем сумму введенных чисел.
a = 1 s = 0 while a: a = int(input()) s = s + a print('Сумма введенных чисел =', s) #2 #3 #5 #0 #Сумма введенных чисел = 10
Создадим переменную a
и присвоим ей значение 1, для того, чтобы запустить цикл while (1 будет преобразована в тип bool
— True
).
Создадим переменную s
, которая будет отвечать за подсчет суммы чисел введенных пользователем.
Внутри цикла пользователь вводит числа, которые суммируются, когда пользователь введет 0, цикл остановится, т.к. условие станет False
.
После цикла выведем сумму всех чисел.
Минимальное число
Пользователь вводит целые числа до тех пор, пока не введет 0. Определить минимально число.
min_num = int(input()) while min_num: b = int(input()) if b == 0: break if b < min_num: min_num = b print(f'Мин. число: {min_num}') #7 #66 #54 #6 #678 #0 #Мин. число: 6
Создадим переменную min_num
, которой присвоим первое введенное пользователем число.
С помощью этой же переменной создадим бесконечный цикл while.
В цикле запрашиваем у пользователя новые числа, которые присваиваем переменной b
.
Создадим 2 условия внутри цикла:
1) Если пользователь ввел 0, то цикл останавливаем с помощью оператора break
.
2) Во втором условии сравниваем введенной число с предыдущим и если оно меньше, то присваиваем его переменной min_num
.
Четные от A до B
Пользователь вводит числа A и B (B > A). Выведем все четные числа от A до B включительно.
a = int(input()) b = int(input()) while b >= a: if a % 2 == 0: print('Четное число -', a) a += 1 #1 #10 #Четное число - 2 #Четное число - 4 #Четное число - 6 #Четное число - 8 #Четное число - 10
Переменным a
и b
присвоим введенные пользователем числа (начало и конец диапазона, в примере 1 и 10).
Создадим цикла while, который будет выполняться «пока b больше либо равно a».
В цикле создадим условие, если a
делится на 2 без остатка, то это четное число и его выводим.
К счетчику a
добавляем 1 при каждой итерации цикла.