Использование циклов while и for в Python
В Python можно использовать циклы while для выполнения одной и той же задачи несколько раз, а циклы for — один раз над данными списка. В этом модуле вы узнаете о двух типах циклов и о том, когда их применять.
Цели обучения
После изучения этого модуля вы сможете сделать следующее.
- Понимать, когда использовать циклы while и for .
- Несколько раз запускать задачу с помощью циклов while .
- Выполнять циклический перебор данных списка с помощью циклов for .
Предварительные требования
- Основные знания по программированию на Python, в том числе использование переменных, строк, целых чисел и математических выражений.
- Опыт работы со списками в Python.
- Опыт с изменением и выполнением кода в записных книжках Jupyter.
Различия между циклами for и while
В цикле for i in range(n) в переменную i будет поочередно записываться каждое значение из диапазона range(n) , например:
In [1]: for i in range(3): . print(i) . 0 1 2
Сначала i принимает значение 0 , затем 1 , и так пока не дойдем до n .
Также циклом for можно пройтись по любому итерабельному объекту, например:
In [4]: array = [1, 2, 3] In [5]: for i in array: . print(i)
В переменную i поочередно будет записаны значения из списка array .
In [2]: i = 0 In [3]: while i < 3: . print(i) . i += 1 . 0 1 2
На каждой итерации мы проверяем меньше ли переменная i чем 3 , если это так, то выводим значение переменной i и прибавляем к ней единицу, повторяем это пока проверка на i < 3 не вернёт False . Мы по сути говорим, пока что-то истинно, то выполняй какие то действия.
Помните пример с циклом for когда мы проходили по списку? С while дело обстоит иначе, нам нужно вытягивать из списка элементы по их индексам, т.е в условие будет выглядеть так: while i < len(array) , функция len(iterable) вернёт нам кол-во элементов в списке, на примере того же array :
In [6]: i = 0 In [7]: while i < len(array): . print(array[i]) . i += 1
Чтобы определить бесконечный цикл while , нужно указать такое условие, которое всегда истинно, например while True .
С циклом for все сложнее, бесконечный цикл явно указать нельзя, так как цикл for закончит свою работу тогда, когда пройдет по всем элементам объекта, следовательно нужно ему передать такой объект, в котором бесконечно элементов, тут нам помогут генераторы, говорить о них детально я не буду, так как тема довольно обширная, лишь покажу небольшой пример с модулем itertools :
In [11]: from itertools import count In [12]: for i in count(): . print(i) # 1, 2, 3, 4 .
Таким образом мы определили бесконечный цикл for , count также принимает 2 необязательных аргумента, start число с которого начнём итерацию, и step собственно шаг.
Тут Вы можете найти немного задачек на циклы для практики.
Циклы Python For и While: Операторы Enumerate, Break, Continue
От автора: что такое цикл? Циклы могут выполнять блок кода несколько раз, пока не будет выполнено определенное условие. Их использование довольно распространено в программировании. Другие языки программирования содержат такие циклы, как For, While, Dowhile и т. д. Python использует только For и While.
Что такое цикл For?
Цикл For используется для перебора элементов последовательности. Он часто применяется, когда у вас есть фрагмент кода, который вы хотите повторить «n» раз.
Что такое цикл While?
Цикл While используется для повторения блока кода. Вместо того, чтобы запускать блок кода один раз, он выполняет блок кода несколько раз, пока не будет выполнено определенное условие. В этом руководстве мы узнаем:
Как использовать «цикл While»
Как использовать «цикл For»
Как использовать цикл For для множества других вещей кроме чисел
Операторы Break в цикле For
Оператор Continue в цикле For
Функция Enumerate для цикла For
Как использовать цикл для повторения одного и того же оператора снова и снова
Как использовать «цикл While»
Цикл While выполняет те же действия, что и оператор if, но вместо однократного запуска блока кода, он возвращается к точке, с которой он начал код, и снова повторяет весь процесс. Синтаксис:
while expression
#Пример файла для работы с циклами
#define a while loop
while ( x < 4 ) :
if __name__ == "__main__" :
Строка кода 4: для переменной x установлено значение 0
Строка кода 7: цикл проверяет условие x
# Пример файла для работы с циклами
#define a while loop
#Define a for loop
for x in range ( 2 , 7 ) :
if __name__ == "__main__" :
Цикл For повторяется столько раз, сколько объявлено в диапазоне.
Например, Цикл For для х в диапазоне (2,7). Когда этот код будет выполнен, он выведет числа от 2 до 7 (2,3,4,5,6). В этом коде число 7 не считается принадлежащим диапазону.
Цикл For также можно использовать для множества других вещей, а не только чисел. Мы рассмотрим это в следующем разделе.
Как использовать цикл For для строк
В этом разделе мы рассмотрим, как цикл For работает и для других вещей, кроме чисел.
#use a for loop over a collection
Months = [ "Jan" , "Feb" , "Mar" , "April" , "May" , "June" ]
for m in Months :
if __name__ == "__main__" :
Строка кода 3: мы сохраняем месяцы («Jan, Feb, Mar, April, May, June») в переменной Months
Строка кода 4: мы повторяем цикл for для каждого значения в Months. Текущее значение месяца хранится в переменной m
Строка кода 5: выводим месяц
Как использовать операторы break в циклах For
Точка остановки — это уникальная функция в цикле For, которая позволяет прервать выполнение цикла.
#use a for loop over a collection
#Months = ["Jan","Feb","Mar","April","May","June"]
#for m in Months:
# используем операторы break и continue
for x in range ( 10 , 20 ) :
if ( x == 15 ) : break
#if (x % 2 == 0) : continue
if __name__ == "__main__" :
В этом примере мы объявили числа от 10 до 20, но мы хотим, чтобы цикл for завершился на числе 15 и прекратил выполнение. Для этого мы объявляем функцию break, определяя (x==15): break, поэтому, как только код вызывает номер 15, он завершает программу.
Строка кода 10 объявляет переменную x в диапазоне (10, 20).
Строка кода 11 объявляет условие для точки остановки в точке x==15,
Строка кода 12 проверяет условие и повторяет шаги, пока не достигнет номера 15
Строка кода 13 выводит результат
Как использовать «оператор continue» в циклах For
Функция continue, как видно из названия, прервет текущую итерацию цикла for, НО продолжит выполнение оставшихся итераций.
#используем цикл for для набора
#Months = ["Jan","Feb","Mar","April","May","June"]
#for m in Months:
# использование операторов break и continue
for x in range ( 10 , 20 ) :
#if (x == 15): break
if ( x % 5 == 0 ) : continue
if __name__ == "__main__" :
Оператор Continue может использоваться в цикле for, когда вы хотите извлечь из списка определенное значение. В нашем примере мы объявили значение 10-20, но между этими числами нам нужны только те числа, которые НЕ делятся на 5, или другими словами, которые не дают ноль при делении на 5.
Таким образом, в диапазоне (10,11, 12… .19,20) существуют только 3 числа (10,15,20), которые делятся на 5, а остальные — нет. Таким образом, для номеров 10, 15 и 20 цикл for не будет продолжен и не будет выводить числа.
В строке кода 10 объявляем переменную x для диапазона (10, 20)
В строке кода 12 объявляется условие для x, деление на 5 = 0.
Строка кода 13 выводит результат
Как использовать функцию «enumerate» для циклов For
Функция enumerate в цикле for делает две вещи:
Возвращает номер индекса для члена
и члена из набора, в котором мы находимся
Функция enumerate используется для нумерации или индексации членов в списке. Предположим, мы хотим создать нумерацию для месяцев (Jan, Feb, Marc, … June), поэтому мы объявляем переменную i, которая перечисляет числа, а m будет выводить номер месяца в списке.
# используем цикл for для набора
Months = [ "Jan" , "Feb" , "Mar" , "April" , "May" , "June" ]
for i , m in enumerate ( Months ) :
print ( i , m )
# использование операторов break и continue
#for x in range (10,20):
#if (x == 15): break
#if (x % 5 == 0) : continue
if __name__ == "__main__" :
Когда код выполняется, выходные данные функции enumerate возвращают название месяца с порядковым номером, например (0-Jan), (1- Feb), (2- March) и т. д.
Строка кода 3 объявляет список месяцев [Jan, Feb,…Jun]
Строка кода 4 объявляет переменные i и m для цикла For
Строка кода 5 выводит результат и снова входит в цикл For, чтобы перечислить остальные месяцы
Давайте рассмотрим другой пример для цикла For, в котором повторяется одно и то же выражение снова и снова.
Код для цикла while
while ( x < 4 ) : if __name__ == "__main__" :
Простой цикл for
for x in range ( 2 , 7 ) :
if __name__ == "__main__" :
Использование цикла for для строк
Months = [ "Jan" , "Feb" , "Mar" , "April" , "May" , "June" ]
for m in ( Months ) :
if __name__ == "__main__" :
Использование оператора break в цикле for
for x in range ( 10 , 20 ) :
if ( x == 15 ) : break
if __name__ == "__main__" :
Использование оператора Continue в цикле for
for x in range ( 10 , 20 ) :
if ( x % 5 == 0 ) : continue
if __name__ == "__main__" :
Код для функции enumerate в цикле for
Months = [ "Jan" , "Feb" , "Mar" , "April" , "May" , "June" ]
for i , m in enumerate ( Months ) :
print i , m
if __name__ == "__main__" :
Как использовать цикл для повторения одного и того же оператора снова и снова
Вы можете использовать цикл даже для повторения одного и того же оператора снова и снова. Здесь в примере мы выводим слово «guru99» три раза.
Пример: чтобы повторить то же выражение несколько раз, мы объявили число в переменной i (i in 123). Поэтому, когда вы запускаете код, как показано ниже, он выводим оператор (guru99), столько раз, сколько объявлено для нашей переменной в (i in 123).
for i in '123' :
print "guru99" , i ,
Как и другие языки программирования, Python также использует циклы, но вместо использования множества различных циклов он ограничен только двумя: «цикл While» и «цикл For».
Циклы while выполняются в зависимости от того, является ли условный оператор истинным или ложным.
Поскольку циклы называются итераторами, они выполняют итерацию элемента на основе набора условий.
Циклы Python For могут также использоваться для множества других вещей (указание набора элементов, которые мы хотим перебрать)
Точка остановки используется в цикле For для прерывания или завершения программы в любой конкретной точке.
Оператор Continue продолжит выполнять оператор и выводить результат в соответствии с набором условий
Функция Enumerate в цикле for возвращает члена набора, в котором мы находимся, с порядковым номером
Пример Python 2
Приведенные выше коды являются примерами Python 3. Если вы хотите запустить Python 2, рассмотрите следующий код.
Python циклы
Важной частью структурного программированию помимо операторов условий считаются циклы. Они помогают автоматизировать последовательные задачи в программе, а именно: повторить выполнение определенных участков кода. Такая необходимость возникает достаточно часто, когда нужно сделать что-нибудь много раз, тем самым, циклы упрощают эту задачу.
Понятие циклов
В нашей жизни мы достаточно часто сталкиваемся с цикличными задачами, к ним можно отнести любые списки, будь-то: продукты, задачи на день, запланированные экзамены. И действительно, когда мы приходим в магазин, то покупаем все, что есть в нашем списке, не останавливаясь, пока не сделаем этого.
В программировании циклы позволяют повторять некоторое действие в зависимости от соблюдения заданного условия. Таким образом организуется исполнение многократной последовательности инструкций.
Есть еще несколько важных понятий, которые нужно знать:
- Телом цикла называется та последовательность кода, которую нужно выполнить несколько раз.
- Единоразовое выполнение – это итерация.
Python позволяет также создавать вложенные циклы. Так, сначала программа запустит внешний и в первой его итерации перейдет во вложенный. Затем она снова вернется к началу внешнего и снова вызовет внутренний. Это будет происходить до тех пор, пока последовательность не завершится или не прервется. Такие циклы полезны в том случае, если нужно перебрать определенное количество элементов в списке.
В Python есть только два цикла: for и while. Первый используется по большей мере в тех случаях, когда нужно написать многоуровневую программу с множеством условий.
Цикл «for»
Цикл for в Python 3 выполняет написанный код повторно согласно введенной переменной или счетчику. Он используется только тогда, когда необходимо совершить перебор элементов заранее известное число раз. Что это значит? У нас имеется список, сначала из него берется первый элемент, потом – второй и так далее, но с каждым из них совершается действие, которое указано в теле for. Примерно это выглядит так:
for [элемент] in [последовательность]: [сделать указанное]
For может содержать данные разных типов: цифры, слова и пр. Рассмотрим пример:
for i in 10, 14, 'первый', 'второй': print(i)
На экране после запуска появится такая запись:
10 14 первый второй
Для упрощения часто используется функция range(), или диапазон. В циклах она указывает на необходимое количество повторов последовательности, уточняя, какие именно элементы из списка for, нам необходимы в данный момент. В скобках может быть указано от одного до трех чисел:
- одно указывает на то, что нужно проверить все числа от 0 и до него;
- два говорят о том, что перебрать нужно все числа, находящиеся между ними;
- три числа сгенерируют список от первого до второго, но с шагом, равным третьей цифре.
Рассмотрим пример. Теоретически вы можете записать так:
for i in [14, 15, 16, 17, 18]: print(i)
Но это слишком затратно, особенно если чисел слишком много, поэтому лучше сделать так, используя указанный выше range():
for i in range(14,18): print(i)
И в первом, и во втором случае на экране появится такая последовательность:
14 15 16 17
Цикл «while»
While с английского языка переводится, как «до тех пор, как». Это достаточно универсальный цикл, он немного похож на условие if, но его код выполняется не один раз. Его условие записывается до тела цикла. После того, как оно выполнено первый раз, программа возвращается к заголовку и снова повторяет все действия. Этот процесс заканчивается тогда, когда условие цикла больше не может быть соблюдено, иными словами перестает быть истинным. Тем, что заранее неизвестно количество проверок, он отличается от предыдущего цикла for. Кстати, еще его называют циклом с предусловием.
Запись цикла while в Python выглядит так:
while [условие истинно]: [сделать указанное]
Приведем пример использования этого цикла:
count = 0 while count < 6: print(count) count += 2
Здесь переменной присваивается значение 0, после чего начинается цикл, в котором проверяется условие, чтобы число было меньше 6. В теле цикла также содержится две инструкции: первая выводит само число на экран, а вторая увеличивает его значение на два. Цикл, таким образом, выполняется, пока условие продолжает быть истинным. На экране перед вами появится следующая последовательность чисел:
0 2 4
После тела цикла можно указать else и блок операций, которые необходимо выполнить, когда закончится while.
Обычно в ней есть смысл, только если указана инструкция break, но программа работает и без последней. Посмотрим на код:
count = 3 while count < 7: print count, " меньше 7" count = count + 1 else: print count, " не меньше 7"
Переменная – 3, задается условие, что пока она меньше 7, нужно выводить ее и выражение «меньше 7», затем прибавлять к ней 1. В тех случаях, когда она уже становится равной 7, то в ход пойдет условие, указанное в else, и на экране появится, что переменная не меньше 7. В результате выполнения этого кода мы увидим:
3 меньше 7 4 меньше 7 5 меньше 7 6 меньше 7 7 не меньше 7
Инструкции break и continue
Оператор break используется для выхода из цикла Python — прерывает его досрочно. Так, если во время выполнения кода, программа натыкается на break, то она сразу прекращает цикл и выходит из него, минуя else. Это необходимо, например, если при выполнении инструкций была обнаружена ошибка, и дальнейшая работа бессмысленна. Посмотрим на пример его применения:
while True: name = input(‘Введите имя:’) if name == ‘хватит’: break print(‘Привет’, имя)
Его реализация будет выглядеть так:
Введите имя: Ирина Привет Ирина Введите имя: Алексей Привет Алексей Введите имя: хватит
После этого выполнение программы будет прервано.
Другая инструкция, которая может менять цикл, — это continue. Если она указана внутри кода, то все оставшиеся инструкции до конца цикла пропускаются и начинается следующая итерация.
В целом, не следует слишком увлекаться использованием этих инструкций.
Цикл с постусловием
Во многих других языках программирования существуют циклы с постусловием, обычно они описываются так:
- repeat [тут исполняемый код] until [условия продолжения];
- do [тут исполняемый код] while [условия продолжения];
К сожалению, в Python цикл с постусловием отсутствует!
Цикл while может стать циклом с постусловием, тогда его примерный вид будет таким:
while True: if not условие: break
while condition is True: stuff() else: stuff()
Так получается, что сначала дается тело цикла, а потом задается условие.
Бесконечные циклы
Бесконечными циклами в программировании называются те, в которых условие выхода их них не выполняется.
Цикл while становится бесконечным, когда его условие не может быть ложным. Например, при помощи него можно реализовать программу «Часы», которая бесконечно отображает время.
Примером реализации в Python бесконечного цикла будет такой код:
Num = 3 while num < 5: print "Привет"
Очевидно, что заданная переменная всегда останется цифрой 3, поскольку никак не задано ее увеличение, поэтому на экране просто будет появляться слово «Привет».
Зачастую цикл не должен быть бесконечным, поскольку это причина неустойчивой работы программы. Для того чтобы выйти из него, нужно нажать комбинацию клавиш: CTRL+C. При этом программы, из которых нет выхода, также существуют. К ним относятся: операционные системы, прошивки микроконтроллеров.
Вложенные циклы
Рассмотрим вложенные циклы в Python. Для реализации можно использовать как вложенные for, так и while.
Про них мы уже писали выше. Здесь же хочется привести пару примеров использования. Они очень часто используются при обработке двухмерных списков.
Вот пример создания двумерного списка и вывода его на экран с помощью print.
d = [[1,2,3],[4,5,6]] for i in range(2): for j in range(3): print(d[i][j])
Нельзя с помощью одного break в Python выйти сразу из двух циклов. В этом случае нужно во внешнем цикле создать условие следующим образом.
toExit = False while True: while True: toExit = doSomething() if toExit: break if toExit: break
Здесь приведен пример использования в Python цикла в цикле. Оба бесконечны. Все будет выполняться бесконечно, до тех пор, пока функция doSomething не вернет True. После этого поочередно сработают break во внешнем и во внутреннем циклах.
Заключение
Как правило, команды в коде выполняются последовательно: одна за другой. Именно поэтому, когда есть необходимость выполнить тело кода несколько раз, используются циклы. Циклы для Python очень значимы, именно они делают повторение простым, логичным и очень понятным.
