В языке программирования Python (также «Пайтон» или «Питон») есть несколько способов зацикливания некоторого действия. Основные инструменты реализации какой-либо итерации в Python - циклы while и for. Цикл while более универсален, чем for, поэтому он работает медленнее. Однако это вовсе не означает, что он лучше! Цикл for используют гораздо чаще, потому как с его помощью реализуются самые сложные задачи для создания многоуровневых и многоусловных программ.
Python: цикл с постусловием
Циклы с постусловием - это циклы while, которые являются самыми универсальными организационными конструкциями в данной среде программирования. Цикл while работает по принципу «до тех пор, пока». Это означает следующее: пока некоторое условие будет возвращать истинное значение, он будет работать! Данная конструкция называется «циклом», потому как функциональное управление циклично повторяется, начиная с первоначального значения. Выход из цикла while в Python будет реализован в тот момент, когда значение станет ложным. В этот момент интерпретатор передает выполнение программы следующему функционально-смысловому сегменту, то есть новой строке, которая располагается после блока с постусловием while.
В языке программированя Python циклы с постусловием while имеют следующий синтаксис:
1. While (условие) : 2. выражение |
Выражением может быть как одна инструкция, так и несколько. Условием всегда является некоторое истинное значение либо ненулевое. Подобная конструкция работает до тех пор, пока заданное условие представляет собой истину.
Использование цикла while в «Пайтон» на примере
Рассмотирим цикл while. Python довольно интересно структурирует его итерации:
a = 0 |
Мы объявили переменную "а" и задали ей нулевое значение. Затем задали условие "while a < 7", то есть пока переменная "а" будет меньше чем число "7", то наш цикл будет выполняться до тех пор, пока не станет ложным.
А ложным (то есть осуществит выход из цикла) он станет тогда, когда переменная станет больше числа "7". Чтобы это произошло, она каждый раз увеличивается на 1, что мы указываем в строке "а = а + 1" .
Если запустить данную конструкцию, то буква "А" будет выведена 7 раз в столбик!
A |
Бесконечный цикл while в Python
Как сделать в Python бесконечный цикл while? Догадаться совсем не сложно, ведь цикл работает до тех пор, пока не получит ложное значение, а если этого значения попросту нет? Ответ на вопрос, наверное, уже и так всем понятен. В каких же случаях бесконечный цикл необходим для решения какой-либо задачи? Данным примером послужит реализация такой программы, как «часы». Здесь, несомненно, потребуется задействовать бесконечный цикл, который будет перманентно обновлять и показывать время.
Бесконечный цикл очень часто является ошибкой начинающих программистов, которые забывают добавлять изменения условий цикла.
Давайте взглянем на следующий фрагмент кода Python. Циклы в данном случае итерируются бесконечно (после символа «#» идет комментарий):
number = 1 # объявляем переменную number и присваиваем ей значение 1 while number < 10: # создаем постусловие, в котором number меньше 10 print 'Hello' # выполняем условие (печатаем сообщение «Hello») |
Такую программу не стоит спешить компилировать, потому как она будет выполняться бесконечно. Мы задали такие условия, при которых никогда не будет ложного значения: условие «number < 10» в данном случае неизменно и истинно, поэтому итерация будет осуществляться постоянно, выводя N-ое количество сообщений “Hello”. Для того чтобы остановить процесс вечной компиляции, нужно будет нажать комбинацию клавиш Ctrl+C в shell.
Python: синтаксис. Циклы while и for
Как уже было сказано выше, в языке программирования «Пайтон» существует несколько способов организации повторения группы выражений. На помощь приходит цикл for, который немного отличается от своего коллеги while, потому как его конструкция несколько сложнее, чем просто постусловие. Об универсальности данного цикла говорить не будем, так как ее попросту нет, однако можно отметить, что цикл for работает намного быстрее, чем while. Множество путей для решения и быстродействие данной конструкции немного выигрывают у цикла с постусловием, поэтому его намного чаще используют для выполнения множества тривиальных задач.
Какие задачи стоят перед циклом for? Несомненно, те же самые, что и у while – итерировать какие-либо процессы. В программках, выполненных на "Питоне", обширно применяется цикл for, который способен осуществлять реализацию обхода заданного множества элементов и выполнять в своем теле различные итерации над ними. Возможности этой конструкции можно применять при обработке строк или списков точно так же, как и любой другой итерируемый объект.
Пример использования цикла for в Python
Допустим, у нас есть некоторый список чисел, и нам нужно каждый элемент (т. е. число) увеличить на три единицы. Реализовать такую задачу мы сможем путем зацикливания, методами цикла for.
Давайте рассмотрим небольшой пример, где мы будем выполнять соответствующие для этого действия (после символа «#» идет комментарий):
spisok_chisel = [5, 15, 25, 35, 45, 55, 65, 75, 85, 95] #объявили массив, содержащий 10 цифр count = 0 # создали счетчик с нулевым значением for elements in spisok_chisel: # перебираем массив и записываем его в elements spisok_chisel[count] = elements + 3 # число из массива увеличиваем на три count = count + 1 # переходим к следующему числу по индексу |
Результат выполнения вышеприведенной конструкции будет таким:
spisok_chisel = [8, 18, 28, 38, 48, 58, 68, 78, 88, 98] |
В нашем примере есть переменная count, которая нам необходима для того, чтобы отмечать изменяющиеся значения в массиве «spisok_chisel». В переменной count записываются значения индекса каждого элемента в массиве (каждое число в списке). Переменная «elements» связывает получившиеся значения в списке. В цикле for мы наблюдаем, как реализуется обработка каждого численного объекта в списке. Внутри цикла каждому числовому объекту с индексом «count» прибавляется сумма текущего итерируемого элемента и тройки. Затем наш индекс «count» увеличивается на один, а поток реализации программы возвращается в начало объявления конструкции for. Таким образом, цикл будет работать до тех пор, пока не обработает каждый элемент в массиве, заданный по условию. Если какой-либо элемент отсутствует, но задан по условию, процесс цикла будет завершен. Обратим внимание на еще один нюанс: если не написать строчку «count = count + 1», то, невзирая на то, что объекты массива успешно обработаются, результат постоянно будет прибавляться к первому числовому объекту c нулевым индексом.
Теперь мы можем вспомнить о принципах работы цикла while и выявить разницу (напомним, что в Python выход из цикла с постусловием осуществляется исходя из логических критериев – true (цикл продолжает работать) либо false (цикл останавливается)).
Как обработать строковое значение в Python при помощи конструкции for?
В каждом языке программирования существуют циклы, и работают они, как правило, по одному и тому же принципу, отличия заметны только лишь в синтаксисе. Однако цикл for в языке "Пайтон" не является обычным и тривиальным, потому как принцип его работы не ограничивается счетчиком. Данная конструкция перебирает каждый элемент отдельно. Все это легко объяснить на примере работы со строками, но для начала давайте разберемся с составом цикла for:
for переменная
в переменной хранится результат работы цикла
in переменная_2
ключевое слово «in» - это обязательное условие при работе с циклом «for». Из переменной_2 вытягиваем значение, которое будем итерировать. Для наглядности и ясности давайте рассмотрим небольшой пример, как работать и перебирать строки в Python:
char = ‘программирование’ # Объявили переменную и присвоили ей строковое значение for slovo in char: # Создаем переменную slovo, в которой будут сохранятся индексы перебора из переменной char print (slovo, end = ‘ ^ ’) # Выводим slovo и после каждой буквы вставляем символ – птичку. |
Результат работы скрипта:
П ^ р ^ о ^ г ^ р ^ а ^ м ^ м ^ и ^ р ^ о ^ в ^ а ^ н ^ и ^ е |
Оператор continue
Оператор continue реализует переход на выполнение следующего цикла, заданного по условию, невзирая на остаток в теле цикла. Использовать оператор continue можно в двух циклах – for и while.
Рассмотрим пример:
for count in ‘повторим каждую букву, кроме о’ if count == ‘o’: continue print (count * 2, end=’’) |
Результат будет следующий:
Ппввттрриимм ккаажжддууюю ббууккввуу,, ккррммее |
Когда обработчик нашел букву «о» в строке ‘повторим каждую букву, кроме о’, то выполнение программы сразу было перенаправлено на строчку после слова ‘continue’, где по условию было задано дублировать каждую букву.
Оператор break
Ключевое слово «break» вставляется в то место, где цикл должен прерваться, не дожидаясь его завершения, которое было задано условием. Данная конструкция очень часто используется при написании программ с большим количеством логики и условий.
Рассмотрим небольшой пример работы оператора break:
for count in ‘повторим каждую букву, кроме о’ if count == ‘o’: break print (count * 2, end=’’) |
Результат будет следующий:
пп |
Когда обработчик нашел букву «о» в строке ‘повторим каждую букву кроме, о’, то выполнение программы сразу было остановлено, невзирая на то, что следующая строчка содержит некоторые условия для цикла.
Магическое слово else
В цикле любого вида можно применить оператор else. Для чего он нужен? Он делает проверку на то, был ли совершен выход из цикла методами break или же обычным путем. Блок с заданными правилами внутри else начнет реализацию только при том условии, если выход из цикла был осуществлен без применения конструкции break.
Рассмотрим небольшой пример:
for count in ‘привет мир’: if count == ‘я’: break else: print(‘В вашей фразе нет буквы «я»’) |
Результат выполнения скрипта:
В вашей фразе нет буквы «я» |
Примеры циклов с обратным порядком в языке программирования Python
Как реализуется в Python обратный цикл? Давайте представим, что пишем программу, которая должна распознавать символьную строчку и печатать ее в обратном порядке. Как это реализовать?
Рассмотрим пример ниже:
slovo = ‘программирование’ new_slovo = [] for count in range (len(s), 0, -1): new_slovo.append(s[i-1]) new_slovlo [‘п’, ‘р’,’о’,’г’,’р’,’а’,’м’,’м’,’и’,’р’,’о’,’в’,’а’,’н’,’и’,’е’] print (new_slovo) [‘п’, ‘р’,’о’,’г’,’р’,’а’,’м’,’м’,’и’,’р’,’о’,’в’,’а’,’н’,’и’,’е’] print(‘’.join(new_slovo)) |
Результат работы скрипта:
еинавориммаргорп |
Вложенные циклы
В языке программирования Python циклы существуют также и вложенные, то есть размещенные в теле другого. В каждом цикле может быть свой вложенный цикл, и так можно строить лестницу до бесконечности. На первой итерации внешний цикл обращается с вызовом к внутреннему циклу, который выполняется до собственного завершения, затем все управление перенаправляется в тело внешнего цикла. В каждом языке есть свои особенности вложенных циклов, давайте же разберемся, как они устроены в языке программирования «Пайтон».
Если используются вложенные циклы, Python предлагает следующий синтаксис:
for переменная in последовательная переменная: for переменная in последовательная переменная действие(действия) действие(действия) |
К особенностям вложенных циклов можно отнести то, что внутри цикла любого типа можно использовать также любой тип цикла! Это значит, что в цикле while (или for) может быть вложен цикл for или опять же while и наоборот.