Циклы — управляющая конструкция, которая дает возможность выполнять определенный участок кода многократно.
Цикл while — выполняет блок кода, пока проверяемое условие выполняется.
while условие:
тело цикла
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
В прошлом примере у нас была переменная 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
в условном 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
останавливает цикл и Python идет выполнять следующие после цикла инструкции.
i = 1
while True: # условие всегда истинно
if i == 5: # если i равно 3, то вызываем оператор break
break # оператор break прерывает выполнение цикла
print(i)
i += 1
#1
#2
#3
#4
Мы создали бесконечный цикл, т.к. условие цикла всегда True
. Но внутри цикла создали отдельно условие, при котором цикл прерывается с помощью оператора break
.
Оператор 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
пропускаем итерацию.
Т.е. не печатаем значение переменной, а переходим назад к условию цикла.
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 внутри другого.
К примеру, выведем с помощью вложенных циклов таблицу умножения:
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
Сумма чисел
Пользователь вводит целые числа до тех пор, пока не введет 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 при каждой итерации цикла.
Содержание: