while loop
Цикл — это некий набор инструкций. Он выполняется до тех пор, пока его условие истинно. Давайте разберемся, как работает цикл while в Python.
Циклы — фундаментальное понятие в программировании. Если вы новичок, то обязаны в них разобраться. Циклы могут помочь выполнять набор инструкций до тех пор, пока заданное условие истинно.
В Python есть два основных вида циклов:
Они очень похожи друг на друга. Но если вы хотите писать по-настоящему быстрый код, вам нужно научиться грамотно выбирать нужный цикл.
Суть работы цикла while очень проста. Работает он так: ваши инструкции выполняются, пока условие истинно.
Цикл while проверяет условие перед каждой итерацией цикла. Если возвращается True, то выполняется блок кода внутри цикла.
Прежде чем мы возьмемся за написание кода, взгляните на блок-схему. Работает цикл следующим образом:
А теперь напишем небольшую программу. Это простой цикл, выводящий в консоль числа от 1 до 10.
x = 1
while x <= 10:
print(x)
x = x+1 Как вы можете заметить, тело цикла выполняется, пока x меньше или равно 10. Если вы присвоите x значение 20, то цикл не запустится вообще.
Вывод будет следующим:
1 2 3 4 5 6 7 8 9 10
Есть две вариации цикла while. Первая — непосредственно сам while, вторая — do-while. Разница заключается в том, что do-while запустится хотя бы один раз.
Цикл while может не запуститься вообще, если условие не будет истинным изначально. Do-while — напротив. Тут сначала выполняется тело цикла, и только потом происходит проверка условия.
Цикл do-while реализован в большинстве языков программирования, но в Python такого оператора нет. Тем не менее, его можно с легкостью имитировать — например, с помощью функций.
Давайте напишем код, имитирующий цикл do-while. Все нужные инструкции мы поместим внутри функции.
x = 20
def run_commands(x):
print(x)
run_commands(x)
x += 1
while x <= 10:
run_commands(x)
x += 1 Эта программа запускает run_commands() еще до цикла while. Но сам цикл while не запустится: x равен 20.
Если вы хотите выполнить блок кода, когда проверка условия возвращает False, — добавьте оператор else.
Добавим в наш код else. Внутри этого блока напишем код, который будет выводить в консоль Готово. Выполнится этот блок только после того, как в консоль выведутся числа от 1 до 10.
x = 1
while x <= 10:
print(x)
x = x + 1
else:
print("Готово") Эта программа выведет в консоль числа от 1 до 10. Как только x станет равно 11, результатом проверки условия будет False. После этого выполнится блок кода else.
Если внутри цикла while у вас только одна строка — можно воспользоваться однострочным вариантом. Делается это так:
x = 1 while x: print(x)
Будьте осторожны — этот цикл бесконечный.
Если вы не будете осторожны, то можете случайно написать бесконечный цикл. Проверка условия бесконечного цикла всегда будет возвращать True. Пример бесконечного цикла:
x = 1
while x >= 1:
print(x) Этот цикл — бесконечный. Внутри цикла нет команды, которая изменяет значение x. Поэтому условие x >= 1 всегда истинно. Именно из-за этого цикл будет запускаться бесконечное количество раз.
Всегда будьте внимательны, когда создаете цикл. Небольшая ошибка — и у вас бесконечный цикл, что в конечном итоге приведет к сбою в работе программы.
С циклом разобрались. Наконец мы можем перейти к операторам его управления.
Когда вы начнете работать в реальных проектах, вы будете сталкиваться с разными ситуациями. Например, когда нужно добавить условие, выполнение которого завершит цикл или пропустит итерацию.
Этот оператор позволяет завершить цикл, если проверка условия возвращает True.
x = 1
while x <= 10:
if x == 5:
break
print(x)
x += 1 Вывод:
1 2 3 4
Выполнение цикла прекращается, когда x становится равно 5 — даже если x больше или равно 1.
Допустим, вам нужно пропустить итерацию цикла, если выполняется какое-то условие. Но цикл вы не хотите завершать до тех пор, пока проверка его условия не вернет False.
В этом случае вам нужно использовать ключевое слово continue:
x = 1
while x <= 10:
if x == 5:
x += 1
continue
print(x)
x += 1 Вывод:
1 2 3 4 6 7 8 9 10
Как видите, цикл выводит в консоль все числа от 1 до 10 кроме 5. Когда x становится равен 5, оставшаяся часть команд не выполняется, а начинается следующая итерация цикла.
Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…