Цикл while в Python
В этом посте рассказываю о цикле while в Python
Видео на YouTube
Кому проще и понятнее разобраться в формате видео — выложил на YouTube:
Цикл while в Python
В этом видео поговорим о второй из важнейших конструкций в программировании — цикле while. Именно с его помощью программы выполняют повторяющиеся действия.
Что делает цикл while
Цикл while используется для повторения выполнения кода, пока заданное условие остаётся истинным (True).
Рассмотрим пример: найдём первую степень двойки, которая больше 1000.
n = 1
i = 0
target = 1000
while n < target:
n *= 2
i += 1
n # 1024
i # 10
2 ** i # 1024После ключевого слова while записывается условие цикла. Цикл выполняется, пока n < target.
Двоеточие означает конец условия и начало блока кода. Оператор *= — это сокращённая форма n = n * 2, а += аналогична i = i + 1.
Переменная i хранит количество итераций, за которые условие перестало выполняться. Мы нашли первую степень двойки, большую тысячи — это 1024, десятая степень двойки.
Ключевое слово break
break используется для прерывания выполнения цикла досрочно.
Найдём первую нечётную степень двойки, большую 1000:
n = 1
i = 0
target = 1000
while True:
if n > target and i % 2 == 1:
break
n *= 2
i += 1
n # 2048
i # 11
2 ** i # 2048Здесь используется бесконечный цикл while True — он всегда истинный. Чтобы остановить его, применяется break. Цикл завершается, когда n > target и i нечётное.
Ключевое слово continue
continue предназначено для пропуска текущей итерации и перехода к следующей.
Посчитаем сумму всех чётных чисел меньше 15:
n = 1
sum = 0
while n < 15:
if n % 2 != 0:
n += 1
continue
sum += n
n += 1
sum # 56
# 2 + 4 + 6 + 8 + 10 + 12 + 14 = 56Ключевое слово else
После цикла while можно добавить блок else, который выполнится, когда условие цикла станет ложным. Однако если в цикле был выполнен break, блок else пропускается.
i = 1
while i > 0:
i -= 1
else:
result = "else сработал"
result # 'else сработал'
i # 0Здесь result определена, потому что цикл завершился естественным образом, когда i стало равно 0.
while True:
break
else:
no_result = "else не сработал"
# NameError: name 'no_result' is not definedВ этом случае else не сработал, потому что цикл был прерван с помощью break.
Вложенные циклы
Как и другие блоки кода, цикл while можно использовать внутри другого цикла while.