Меню

Как работает цикл while в Python

Как работает цикл «while» в Python

И спользование циклов предоставляет программисту возможность многократного исполнения определенного участка кода. Это один из основных рабочих инструментов любого разработчика, и практически ни одна из существующих программ не обходится без него.

Циклы в языке Python представлены двумя основными конструкциями: while и for . Цикл while считается универсальным, в то время как for нужен для обхода последовательности поэлементно. Более подробную информацию о цикле for вы можете прочитать здесь .

Так или иначе, обе конструкции одинаково применимы и являются важнейшими элементами любого высокоуровневого языка, в том числе и языка Python.

Немного информатики

Как было отмечено выше,

Напишем на псевдокоде классическую схему:

повторять, пока условие начало цикла последовательность инструкций конец цикла

Конструкция начинает свою работу с проверки условия, и, если оно истинно, запускается цикл. На каждой новой итерации (единичный проход по циклу) условие продолжения проверяется вновь. Таким образом, последовательность инструкций будет исполняться до тех пор, пока это условие, наконец, не окажется ложным.

Циклы, как механизм программирования, нужны, главным образом, для упрощения написания кода. Вполне очевидно, что создавать программу, выполняющую определённую операцию для каждой точки 4К дисплея в отсутствии циклов – это вручную повторять описание нужной команды 4096*2160 раз. 🤔 Много? Безусловно.

Применение в этой задаче всего одного цикла позволит сократить длину кода, как минимум, на 6 порядков. А если представить, что ту же самую программу нужно переписать для 8К монитора, то, вместо изменения всего одной инструкции в счетчике цикла, вам придётся дописывать ещё пару десятков миллионов строк кода, что является попросту недопустимым по своей величине и трудозатратам объёмом.

Польза циклов ясна и очевидна. Обладая мощной выразительностью и ёмкой натурой, они, без сомнений, являются одним из фундаментальных конструктов высокоуровневого программирования. Каждому разработчику необходимо знать и понимать принципы их работы.

Синтаксис цикла while

В самом простом случае, цикл while в python очень похож по своей структуре на условную конструкцию с if :

import time a = 1 if a == 1: print(«I’m the condition») while a == 1: print(«I’m the loop») time.sleep(1)

И в том и в другом случае, блок кода внутри (инструкция print(‘…’) ) будет исполнен тогда и только тогда, когда условие (a == 1) будет иметь значение True . Вот только в конструкции с if , при успешной проверке, вывод на экран будет выполнен всего один раз, а в случае с while фраза «I’m the loop» будет печататься бесконечно.

Такое явление называется бесконечным циклом . У них есть свои определенные смысл и польза, но их мы разберём чуть позже, поскольку чаще всего цикл всё-таки должен как-то заканчиваться. И вполне логично, что для его завершения нужно произвести определенные манипуляции с условием.

Переменная a , в примере выше, называется управляющей (или счетчик). При помощи таких переменных можно контролировать момент выхода из цикла. Для этого их следует сравнить с каким-либо значением.

count = 1 # фиксируем начальное значение while count 1 2 3 4 5 6 7 8 9 10

В Python есть и более сложные, составные условия. Они могут быть сколь угодно длинными, а в их записи используются логические операторы ( not , and , or ):

dayoff = False sunrise = 6 sunset = 18 worktime = 12 # пример составного условия while not dayoff and sunrise You have 6 hours to work You have 5 hours to work You have 4 hours to work You have 3 hours to work You have 2 hours to work You have 1 hours to work Finally it’s over!

Как можно заметить, управляющая переменная вовсе не обязана являться счётчиком. Она может быть просто логической переменной, чье значение изменяется где-то в самом цикле:

num = 0 contol = True while num

Стоит иметь в виду, что использование неинициализированной переменной в качестве управляющей цикла обязательно приведёт к возникновению ошибки:

# unknown до этого нигде не была объявлена while unknown: print(‘+’) > Traceback (most recent call last): while unknown: NameError: name ‘unknown’ is not defined

Несколько примеров использования цикла while

Идея циклов while проста: требуется определенное количество раз сделать что-то? Заведи счётчик и уменьшай/увеличивай его в теле цикла.

x = 20 y = 30 while x 20 23 26 29

Своеобразным счётчиком может быть даже строка:

word = «pythonchik» while word: print(word, end=» «) # на каждой итерации убираем символ с конца word = word[:-1] > pythonchik pythonchi pythonch pythonc python pytho pyth pyt py p

break и continue

Оператор break заставляет интерпретатор прервать выполнение цикла и перейти к следующей за ним инструкции:

counter = 0 while True: if counter == 10: break counter += 1

Цикл прервётся после того, как значение счетчика дойдёт до десяти.

Существует похожий оператор под названием continue , однако он не прекращает выполнение всей конструкции, а прерывает лишь текущую итерацию, переходя затем в начало цикла:

# классический пример вывода одних лишь чётных значений z = 10 while z: z -= 1 if z % 2 != 0: continue print(z, end=» «) > 8 6 4 2 0

Эти операторы бывают весьма удобны, однако плохой практикой считается написание кода, который чересчур ими перегружен.

В Python-циклах часть else выполняется лишь тогда, когда цикл отработал, не будучи прерван break -ом.

В реальной практике, else в циклах применяется нечасто. Такая конструкция отлично сработает, когда будет необходимо проверить факт выполнения всех итераций цикла.

👉 Пример из практики : проверка доступности всех выбранных узлов сети

Например, обойти все узлы локальной сети и

def print_prime_list(list_of_numbers: list) -> None: «»» функция выведет список чисел, если каждое из этих чисел является простым «»» number_count = len(list_of_numbers) # количество чисел i = 0 while i print_prime_list([11, 113, 199]) > [11, 113, 199]

В каком-либо другом языке стоило бы завести булеву переменную, в которой хранится результат проверки, но у Python, как всегда, есть способ получше!

while true или бесконечный цикл

В большинстве случаев, бесконечные циклы появляются из-за логических ошибок программиста (например, когда условие цикла while при любых вариантах равно True ). Поэтому следует внимательно следить за условием, при котором цикл будет завершаться.

Однако вы некоторых случая бесконечный цикл делают намерено:

  1. Если нужно производить какие-то действия с интервалом, и выходить из цикла лишь в том случае, когда внутри тела «зашито» условие выхода. Пример : функция, которая возвращает connection базы данных. Если связь с базой данных отсутствует, соединение будет пытаться (в цикле) установиться до тех пор, пока не установится.
  2. Если вы пишете полноценный демон, который продолжительное время висит как процесс в системе и периодически производит какие-то действия. В таком случае остановкой цикла будет прерывание работы программы. Пример : скрипт, который раз в 10 минут «пингует» IP адреса и пишет в лог отчет о доступности этих адресов.
Читайте также:  Зачем магазину размещаться на Маркете

💁‍♂️ Совет : в бесконечных циклах рекомендуется ставить таймаут выполнения после каждой итерации, иначе вы очень сильно нагрузите CPU :

import time while True: print(«Бесконечный цикл») time.sleep(1) > Бесконечный цикл Бесконечный цикл Бесконечный цикл Traceback (most recent call last): File «main.py», line 5, in time.sleep(1) KeyboardInterrupt Aborted!

Код был прерван комбинацией клавиш ^Ctrl + C . Иначе цикл продолжался бы бесконечно.

Best practice

Цикл while в одну строку

Для составных конструкций (таких, где нужен блок с отступом), можно этот отступ убрать, но только если в блоке используются простые операторы. Отделяются они всё также двоеточием.

будут считаться эквивалентными, и при чтении второй из них интерпретатор не будет выдавать ошибку.

Вложенные циклы

Вложенные while циклы встречаются не так часто, как их братья (или сестры) for , что, однако не мешает им быть полезными. Простой пример – выведем на экран таблицу умножения:

q = 1 while q 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 , однако стоит иметь в виду, что вложения свыше третьего уровня будут уже практически нечитаемыми для человека.

Как выйти с помощью break из двух циклов

В случае вложенных циклов, оператор break завершает работу только того цикла, внутри которого он был вызван:

i = 100 j = 200 while i J 200 J 201 J 202 # здесь видно, что внутренний цикл прерывается, но внешний продолжает работу I 100 I 101 I 102 I 103 I 104

В Python не существует конструкций, которая прерывала бы сразу несколько циклов. Но есть как минимум 3 способа, которыми можно реализовать данное поведение:

Способ №1 Используем конструкцию for . else . :

def same_values_exists(list_1: list, list_2: list) -> None: «»» функция выводит на экран первые совпавшие числа из списков «»» for i in list_1: for j in list_2: print(«compare: «, i, j) if i == j: print(f»found «) break else: continue break same_values_exists([0, 10, -2, 23], [-2, 2]) > compare: 0 -2 compare: 0 2 compare: 10 -2 compare: 10 2 compare: -2 -2 found -2

Если все итерации вложенного цикла сработают, выполнится else , который скажет внешнему циклу продолжить выполнение. Если во внутреннем цикле сработает break , сразу выполнится второй break .

Способ №2 Через создание дополнительного флага:

def same_values_exists(list_1: list, list_2: list) -> None: «»» функция выводит на экран первые совпавшие числа из списков «»» break_the_loop = False for i in list_1: for j in list_2: print(«compare: «, i, j) if i == j: print(f»found «) break_the_loop = True break if break_the_loop: break same_values_exists([0, 10, -2, 23], [-2, 2]) > compare: 0 -2 compare: 0 2 compare: 10 -2 compare: 10 2 compare: -2 -2 found -2

Внешний цикл был прерван вслед за внутренним. Дело сделано!

Способ №2 Если циклы находятся в функции (как в нашем примере), достаточно просто сделать return :

def same_values_exists(list_1: list, list_2: list) -> None: «»» функция выводит на экран первые совпавшие числа из списков «»» for i in list_1: for j in list_2: print(«compare: «, i, j) if i == j: print(f»found «) return same_values_exists([0, 10, -2, 23], [-2, 2]) > compare: 0 -2 compare: 0 2 compare: 10 -2 compare: 10 2 compare: -2 -2 found -2

Источник



Цикл while в Python

Из этого материала вы узнаете, что такое циклы while, как они могут становиться бесконечными, как использовать инструкцию else в цикле while и как прерывать исполнение цикла.

Управление потоком инструкций: цикл While в Python

Как и другие языки программирования Python включает несколько инструкций для управления потоком. Одна из таких — if else. Еще одна — циклы. Циклы используются в тех случаях, когда нужно повторить блок кода определенное количество раз.

Что такое цикл while в Python?

Цикл while используется в Python для неоднократного исполнения определенной инструкции до тех пор, пока заданное условие остается истинным. Этот цикл позволяет программе перебирать блок кода.

Сначала программа оценивает условие цикла while. Если оно истинное, начинается цикл, и тело while исполняется. Тело будет исполняться до тех пор, пока условие остается истинным. Если оно становится ложным, программа выходит из цикла и прекращает исполнение тела.

Рассмотрим пример, чтобы лучше понять.

Бесконечный цикл while в Python

Бесконечный цикл while — это цикл, в котором условие никогда не становится ложным. Это значит, что тело исполняется снова и снова, а цикл никогда не заканчивается.

Следующий пример — бесконечный цикл:

Если запустить этот код, то программа войдет в бесконечный цикл и будет снова и снова спрашивать имена. Цикл не остановится до тех пор, пока не нажать Ctrl + C .

Else в цикле while

В Python с циклами while также можно использовать инструкцию else . В этом случае блок в else исполняется, когда условие цикла становится ложным.

Этот пример демонстрирует принцип работы else в цикле while.

Программа исполняет код цикла while до тех, пока условие истинно, то есть пока значение a меньше 5. Поскольку начальное значение a равно 1, а с каждым циклом оно увеличивается на 1, условие станет ложным, когда программа доберется до четвертой итерации — в этот момент значение a изменится с 4 до 5. Программа проверит условие еще раз, убедится, что оно ложно и исполнит блок else , отобразив «условие неверно».

Читайте также:  Фурадонин инструкция когда принимать

Прерывания цикла while в Python

В Python есть два ключевых слова, с помощью которых можно преждевременно остановить итерацию цикла.

  1. Break — ключевое слово break прерывает цикл и передает управление в конец цикла
  2. Continue — ключевое слово continue прерывает текущую итерацию и передает управление в начало цикла, после чего условие снова проверяется. Если оно истинно, исполняется следующая итерация.

Источник

Цикл while в Python

Цикл while в Python

Предназначение цикла while в Python, такое же, как и в других языках программирования — выполнять одинаковые инструкции столько раз, пока условие верно (True). В переводе с английского языка, while — до тех пор, пока. Удобнее использовать цикл while, а не for, когда заранее неизвестно количество прохождений в цикле (итераций).

Синтаксис while в Python

Не один язык программирования не может похвастаться таким простым синтаксисом, как у Python. Если кто не читал, то здесь моя статья о том, почему я рекомендую изучать Python, как первый язык программирования. Ну посудите сами, что может быть проще?

while условие:
инструкция 1
инструкция 2
. и.т.д
инструкция вне цикла

Цикл состоит из оператора while, заданного условия и тела цикла с инструкциями. Отступы для инструкций после двоеточия, явно указывают на принадлежность инструкций к блоку с циклом while. Последующие инструкции без отступов, выходят за пределы цикла. Однократное выполнение тела с инструкциями, называется итерацией.

Количество повторений будет зависеть от условия, выполнив все инструкции, программа снова проверяет условие. Если условие будет верным (True), то инструкции выполнятся ещё один раз. А если условие окажется ложью (False), то Python выйдет из цикла и продолжит свою работу, за пределами цикла.

Пример работы цикла while

Задача: Вывести все числа от 5 до 10 включительно.

Комментарии к задаче

Заводим переменную i со значением 5, как отправную точку для начала вывода. Последнее выводимое число, должно быть 10. Создаем условие (while), при котором все числа должны быть меньше 11. Проверяем условие, если 5 меньше 1, то переходим к выполнению первой инструкции:

print(i) — вывести переменную i
выводится число 5

Во второй инструкции вычисляем второе выводимое число, увеличиваем i на единицу: к текущему значению в переменной i прибавим 1.

Первая итерация закончена, возвращаемся обратно в условие и снова проверяем. Если i меньше 11 (i = 6), то заходим на новый цикл: распечатываем 6 и увеличиваем переменную снова на 1. Цикл while повторяется столько количество раз, пока условие верно. После того, как условие станет неверным (False) — значение переменной станет равно 11, Python выйдет из цикла while.

Бесконечный цикл while

Бесконечный цикл в Python получить очень легко — Надо просто задать условие, при котором всегда будет возвращаться True. Число 5 всегда будет меньше 6, поэтому слово «Бесконечность» будет выводиться на экран, бесконечное количество раз. Завершить работу программы можно будет, только принудительно закрыв программу или с помощью ключевого слова break. В намеренном создании бесконечного цикла, особого смысла нет. Просто новички по неопытности, случайно попадают в ситуацию «бесконечности».

Как остановить цикл while в Python?

Ключевое слово break останавливает цикл while. Как это полезно можно использовать? Предположим перед нами стоит задача вывести числа от 1 до 5.

Заводим переменную счетчик, прописываем условие, которое всегда будет верным. Распечатываем текущее значение в переменной счетчика — оно равно 1. Каждый раз увеличивая значение счетчика на 1. Но когда значение переменной станет равной 5, то выполнится break и цикл остановится. Этого мы и хотели, на экран выведутся числа.

Заключение

Узнать больше про циклы и не только, вы можете из моего видеокурса по Python. Переходите на страничку с описанием, где я расскажу о себе и о том, каких результатов и за какое время вы достигнете, после прохождения курса по Python.

Создано 04.11.2019 10:01:26

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Python циклы

    Важной частью структурного программированию помимо операторов условий считаются циклы. Они помогают автоматизировать последовательные задачи в программе, а именно: повторить выполнение определенных участков кода. Такая необходимость возникает достаточно часто, когда нужно сделать что-нибудь много раз, тем самым, циклы упрощают эту задачу.

    Понятие циклов

    В нашей жизни мы достаточно часто сталкиваемся с цикличными задачами, к ним можно отнести любые списки, будь-то: продукты, задачи на день, запланированные экзамены. И действительно, когда мы приходим в магазин, то покупаем все, что есть в нашем списке, не останавливаясь, пока не сделаем этого.

    В программировании циклы позволяют повторять некоторое действие в зависимости от соблюдения заданного условия. Таким образом организуется исполнение многократной последовательности инструкций.

    Есть еще несколько важных понятий, которые нужно знать:

    • Телом цикла называется та последовательность кода, которую нужно выполнить несколько раз.
    • Единоразовое выполнение – это итерация.

    Python позволяет также создавать вложенные циклы. Так, сначала программа запустит внешний и в первой его итерации перейдет во вложенный. Затем она снова вернется к началу внешнего и снова вызовет внутренний. Это будет происходить до тех пор, пока последовательность не завершится или не прервется. Такие циклы полезны в том случае, если нужно перебрать определенное количество элементов в списке.

    Читайте также:  Ремонт и регулировка телевизоров Витязь 37 51 54 CTV 6612 6622

    В Python есть только два цикла: for и while. Первый используется по большей мере в тех случаях, когда нужно написать многоуровневую программу с множеством условий.

    Цикл «for»

    Цикл for в Python 3 выполняет написанный код повторно согласно введенной переменной или счетчику. Он используется только тогда, когда необходимо совершить перебор элементов заранее известное число раз. Что это значит? У нас имеется список, сначала из него берется первый элемент, потом – второй и так далее, но с каждым из них совершается действие, которое указано в теле for. Примерно это выглядит так:

    For может содержать данные разных типов: цифры, слова и пр. Рассмотрим пример:

    На экране после запуска появится такая запись:

    Для упрощения часто используется функция range(), или диапазон. В циклах она указывает на необходимое количество повторов последовательности, уточняя, какие именно элементы из списка for, нам необходимы в данный момент. В скобках может быть указано от одного до трех чисел:

    • одно указывает на то, что нужно проверить все числа от 0 и до него;
    • два говорят о том, что перебрать нужно все числа, находящиеся между ними;
    • три числа сгенерируют список от первого до второго, но с шагом, равным третьей цифре.

    Рассмотрим пример. Теоретически вы можете записать так:

    Но это слишком затратно, особенно если чисел слишком много, поэтому лучше сделать так, используя указанный выше range():

    И в первом, и во втором случае на экране появится такая последовательность:

    Цикл «while»

    While с английского языка переводится, как «до тех пор, как». Это достаточно универсальный цикл, он немного похож на условие if, но его код выполняется не один раз. Его условие записывается до тела цикла. После того, как оно выполнено первый раз, программа возвращается к заголовку и снова повторяет все действия. Этот процесс заканчивается тогда, когда условие цикла больше не может быть соблюдено, иными словами перестает быть истинным. Тем, что заранее неизвестно количество проверок, он отличается от предыдущего цикла for. Кстати, еще его называют циклом с предусловием.

    Запись цикла while в Python выглядит так:

    Приведем пример использования этого цикла:

    Здесь переменной присваивается значение 0, после чего начинается цикл, в котором проверяется условие, чтобы число было меньше 6. В теле цикла также содержится две инструкции: первая выводит само число на экран, а вторая увеличивает его значение на два. Цикл, таким образом, выполняется, пока условие продолжает быть истинным. На экране перед вами появится следующая последовательность чисел:

    Обычно в ней есть смысл, только если указана инструкция break, но программа работает и без последней. Посмотрим на код:

    Переменная – 3, задается условие, что пока она меньше 7, нужно выводить ее и выражение «меньше 7», затем прибавлять к ней 1. В тех случаях, когда она уже становится равной 7, то в ход пойдет условие, указанное в else, и на экране появится, что переменная не меньше 7. В результате выполнения этого кода мы увидим:

    Инструкции break и continue

    Оператор break используется для выхода из цикла Python — прерывает его досрочно. Так, если во время выполнения кода, программа натыкается на break, то она сразу прекращает цикл и выходит из него, минуя else. Это необходимо, например, если при выполнении инструкций была обнаружена ошибка, и дальнейшая работа бессмысленна. Посмотрим на пример его применения:

    Его реализация будет выглядеть так:

    После этого выполнение программы будет прервано.

    Другая инструкция, которая может менять цикл, — это continue. Если она указана внутри кода, то все оставшиеся инструкции до конца цикла пропускаются и начинается следующая итерация.

    В целом, не следует слишком увлекаться использованием этих инструкций.

    Цикл с постусловием

    Во многих других языках программирования существуют циклы с постусловием, обычно они описываются так:

    • repeat [тут исполняемый код] until [условия продолжения];
    • do [тут исполняемый код] while [условия продолжения];

    Цикл while может стать циклом с постусловием, тогда его примерный вид будет таким:

    Так получается, что сначала дается тело цикла, а потом задается условие.

    Бесконечные циклы

    Бесконечными циклами в программировании называются те, в которых условие выхода их них не выполняется.

    Цикл while становится бесконечным, когда его условие не может быть ложным. Например, при помощи него можно реализовать программу «Часы», которая бесконечно отображает время.

    Примером реализации в Python бесконечного цикла будет такой код:

    Очевидно, что заданная переменная всегда останется цифрой 3, поскольку никак не задано ее увеличение, поэтому на экране просто будет появляться слово «Привет».

    Зачастую цикл не должен быть бесконечным, поскольку это причина неустойчивой работы программы. Для того чтобы выйти из него, нужно нажать комбинацию клавиш: CTRL+C. При этом программы, из которых нет выхода, также существуют. К ним относятся: операционные системы, прошивки микроконтроллеров.

    Вложенные циклы

    Рассмотрим вложенные циклы в Python. Для реализации можно использовать как вложенные for, так и while.

    Про них мы уже писали выше. Здесь же хочется привести пару примеров использования. Они очень часто используются при обработке двухмерных списков.

    Вот пример создания двумерного списка и вывода его на экран с помощью print.

    Нельзя с помощью одного break в Python выйти сразу из двух циклов. В этом случае нужно во внешнем цикле создать условие следующим образом.

    Здесь приведен пример использования в Python цикла в цикле. Оба бесконечны. Все будет выполняться бесконечно, до тех пор, пока функция doSomething не вернет True. После этого поочередно сработают break во внешнем и во внутреннем циклах.

    Заключение

    Как правило, команды в коде выполняются последовательно: одна за другой. Именно поэтому, когда есть необходимость выполнить тело кода несколько раз, используются циклы. Циклы для Python очень значимы, именно они делают повторение простым, логичным и очень понятным.

    Источник

    Adblock
    detector