Языки программирования используются для решения разного рода задач связанных с массивными типами данных, такими как списки, строки, кортежи, словари. И многих других требующих от современного языка обработку большого входящего потока данных. В Python для работы с такими типами существуют циклы, которые подразделяются на цикл со счетчиком for и без определенного количества шагов цикл while python. О втором сегодня и пойдет речь!
Что такое While в Python?
While – представляет собой циклическую конструкцию, которая выполняется до тех пор пока верно условие заданное для нее. Внутри конструкции прописаны инструкции для выполнения цикла, а так же ключевые слова для остановки самой конструкции или пропуска итерации. Рассмотрим ее синтаксис ниже:

Сначала задается ключевое слово while, с условием которое проверяется на истинность и если оно True, то выполняется ряд инструкций. Обратите внимание все что имеет отступы принадлежит конструкции и будет выполняться по правилу работы цикла, кроме continue/break, но об этом поговорим ниже. От теории к практике и если до этого было не понятно, каким образом работает циклическая машина, то на примере будет наглядно видно. К примеру, нам необходимо вывести числа от 0 до 5 для этого напишем конструкцию ниже:
n=0
while n <= 5:
print (n)
n+=1
print ('END')

Обратите внимание, что не все части циклической конструкции из синтаксиса были задействованы, ведь для решения данной задачи достаточно представленных. Объясним работу цикла: для начала n становится равно нулю, затем управление поступает на цикл while, где дословно выполняется конструкт «Пока n меньше или равно 5 делай!». Язык Python достаточно человекочитаемый, поэтому понять можно достаточно просто логически.
Вернемся к циклу, так как ноль больше пяти, то условие выполнится и перейдет к принту нашей переменной n со значением ноль. А так же прибавит к ней единицу, после чего управление опять перейдет к while и проверит условие. Данный круг от проверки до проверки называется итерацией. Как переменная n будет равна 6, то условие не выполнится и управление перейдет на print (‘END’). Вывод будет выглядеть так:
0
1
2
3
4
5
END Все действия были выполнены в среде облачного сервера от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:
Скриншот №3 — Создание сервера
Вернемся к циклам, так как циклы это всего лишь конструкция, то внутри себя они могут принимать любые доступные в Python инструкции, что увеличивает возможности работы с ними. Однако важно помнить, что вы можете задать такой алгоритм, условие которого будет всегда истина и он самостоятельно не остановится. К примеру:
n=True
while n:
print (n)
print ('END')
Ошибка условия в данном алгоритме приводит к тому, что python бесконечный цикл будет крутиться и выводить значение True. Ведь переменная цикла python n его хранит и в процессе не меняется, а это значит, что print (‘END’), так никогда и не наступит, так как управление не будет передано из цикла. Поэтому желательно избегать алгоритмов с не меняющимся условием.
Блок else в цикле while
В некоторых случаях может потребоваться дополнительный вывод уведомления для пользователей, изменения значений, а так же обнуления переменных после цикла. Else, как раз для этого подходит и будет выполнен в случае, когда условие будет False или не выполнено. Уведомим пользователей, что закончился поиск в цикле:
user_language = input('Ваши языки:')
ex_language = ['en', 'fr', 'jp', 'kz']
while user_language in ex_language:
print (f'Найден язык в списке: {user_language}')
user_language = 0
else: print ('Конец поиска!')

Если язык введенный пользователем находится в списке доступных, то он будет найден и выведен. А после того, как условие будет неверным передаст управление блоку else и выпишет строку ‘Конец поиска!’.
А как принудительно остановить цикл после полученного значения?
Блоки break и continue в Python
Для этого существуют блоки, которые позволяют закончить выполнение цикла – break, пропустить текущую итерацию – continue. Они используются, так же как и обычные ключевые слова, однако, после них инструкции не выполняются, что важно учитывать, при написании кода. Рассмотрим на примере:
user_language = input('Ваши языки:')
ex_language =['en','fr', 'jp', 'kz']
while user_language in ex_language:
if user_language == 'jp':
user_language='0'
continue
print (f'Найден язык в списке: {user_language}')
break
else: print ('Язык не найдем в списке!')

Если пользователь введет язык jp, то передав управление while оно вскоре перейдет на условную конструкцию if, где так же проверяется логическое выражение. В случае с текущим значением jp условие корректно и действия условной конструкции выполнятся, а именно обнуление user_language и continue, которое закончит выполнение текущей итерации и перейдет к новой. Это значит, что условие будет проверено заново и выведено на экран:
Ваши языки: jp
Язык не найдем в списке!Однако, если ввести другое значение из списка языков, к примеру en, то цикл отработает с выводом:
Ваши языки: en
Найден язык в списке: enТак как после передачи управления на break цикл завершается без повторной проверки и else не выполняется, потому что это часть цикла. Понимание и правильное применение цикла while позволяет эффективно решать задачи, связанные с повторяющимися процессами и обработкой данных в Python, делая код более гибким и мощным.