Включите исполнение JavaScript в браузере, чтобы запустить приложение.
1 сен 2024

Какие бывают виды циклов в Python и как они работают

Разбираемся с видами циклов в языке программирования Python: что такое while и for и зачем они нужны. Как пропустить шаг в цикле, какие операторы для этого использовать, что такое бесконечные и вложенные циклы.

Какие бывают виды циклов в Python и как они работают

Что такое циклы в Python Зачем нужны циклы в Python Примеры циклов в Python

While

ForПрерывание цикла: ключевое слово break Пропуск части цикла: ключевое слово continue Последнее действие в цикле: ключевое слово else Бесконечный циклВложенные циклы в Python

Циклы — ключевое понятие не только в языках программирования, но и в жизни. Мы пользуемся ими каждый день для решения различных типов бытовых задач:

  • ●  когда решаем сидеть дома, пока на улице дождь, — это аналог цикла while с предусловием;
  • ●  когда идем в магазин со списком продуктов и проверяем после, всё ли купили, — это аналог for с итерацией, или проходом, по элементам;
  • ●  когда берем зонтик, если на улице дождь, и не берем, если погода хорошая, — аналог использования оператора if–else;
  • ●  когда пропускаем одну остановку метро и выходим на следующей—аналог примененияоператораcontinue.В статье рассмотрим,что такоециклывПитоне,как они работают,какими могут быть,для чего используются.Что такое циклывPythonЦиклы (loops) в языках программирования позволяют многократно выполнять определенное действие до тех пор, пока выполняется определенное условие.
Схема цикла в языках программирования
Схема цикла в языках программирования

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

Зачем нужны циклы в PythonОни используются, чтобы выполнить одну и ту же операцию несколько раз. Этот

инструмент программирования может быть полезен при решении следующих задач:

  • ●  повторение действий — перебрать массив и отсортировать его элементы, разбить строку на символы;
  • ●  автоматизация — найти путь в лабиринте или решить систему уравнений;
  • ●  моделирование процессов — рассчитать движение объекта или рост популяции;
  • ●  разработка игр—проверить условия победы или другую реализацию игровойлогики;
  • ●  тестирование—сгенерировать данные для проверки корректности работыпрограммы.К примеру,нужно вывести все цифры от1до9.Можно сделать это вручную,а можно при помощиloopи встроенной функцииrange.Она создает последовательность внутри заданного диапазона.Ниже представлены примеры для сравнения.
https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/imagec5caff7970b5abb14763ada279def0ab558574f1.png

Результат (список от 1 до 9) одинаковый. Но благодаря loop удалось уменьшить количество строчек кода почти в 2 раза. А если необходимо вывести числа от 1 до 10 000? В случае с использованием for in программисту достаточно изменить одну цифру. 

Код будет выглядеть так:

for i in range (1,10001): print(i)

Код на Python, позволяющий ранжировать числа от одного до 10 000
Код на Python, позволяющий ранжировать числа от одного до 10 000

При написании вручную придется 10 000 раз повторить команду print: print(1), print(2), print(3), print(4)... print(9999), print(10000).

Аналогичные возможности есть и в других языках программирования, но синтаксис отличается. Приведем примеры и для них, как вывести цифры от 1 до 9:

Коды на Python, PHP, JavaScript, C++, позволяющие ранжировать числа от одного до девяти
Коды на Python, PHP, JavaScript, C++, позволяющие ранжировать числа от одного до девяти

Примеры циклов в PythonВ Пайтоне программисты работают с двумя основными видами loops:

  • ●  while — с предусловием (например, «до тех пор, пока идет дождь, сидим дома»);
  • ●  for —для перебора итерируемого объекта(аналогичным образом мы проверяемсписок продуктов в магазине).Разберемся подробнее,как работает и как используется каждый.WhileВPython while—этоloopс предусловием(«до тех пор,пока»).Программист задает условие,и алгоритм проверяет его.Еслиусловиеистинно(while true),выполняется инструкция—фрагмент кода.Синтаксически это выглядит таким образом:whileУСЛОВНОЕ_ВЫРАЖЕНИЕ:ИНСТРУКЦИЯ (фрагмент кода).Когда условие не выполнилось(стало ложным),происходит выход изцикла.Whileцелесообразно использовать,когда количество повторений неизвестно и может меняться в зависимости от переменной в телеloop.К примеру,ситуация с дождем:whileИДЕТ ДОЖДЬ:СИДИМ ДОМАСколько раз(дней)придется оставаться дома—неизвестно.Но пока идет дождь(условие правдиво, true),остаемся в квартире.Когда дождь закончится(условие перестанет быть истиной),мы не будем сидеть дома(происходит выход из цикла).Пример кода: i=2while i < 10:print('Цикл выполнен', i, 'раз(а)')i=i+1Что в нем происходит?
  • ●  i = 2 — мы задаем переменную i и указываем ее значение, равное 2;
  • ●  while i < 10: — указываем нужное нам условие (пока i будет меньше 10);
  • ●  print('Цикл выполнен', i, 'раз(а)')иi = i+1—даем инструкцию,что сделать:вывести фразу в скобках и увеличить i на 1.
Пример цикла while в Python
Пример цикла while в Python

Результат выполнения кода — вывод фразы «Цикл выполнен n раз(а)». Цикл while позволяет изменять переменную: мы добавляем 1 — и видим числа 2, 3, 4, 5, 6, 7, 8, 9.

For

Это loop, перебирающий итерируемый объект. Сам процесс перебора называется итерированием.

Итерируемым объектом может быть:

  • ●  кортеж (tuple, неизменяемый список)— к примеру, tuple( [1, 2, 3] ) или [1, 2, 3];
  • ●  строка (str, strings) — например, ‘GitVerse’;
  • ●  список(list) —выглядит какlist('abc')и другие.Синтаксис выглядит таким образом:forИМЯ_ПЕРЕМЕННОЙinОБЪЕКТ:ИНСТРУКЦИИ (код, который должен многократно повториться).К примеру, мы идем в магазин со списком, в котором есть следующие наименования:

● хлеб;● молоко; ● масло; ● капуста.

Когда мы стоим в магазине и проверяем, все ли купили, то осуществляем итерацию по объекту «список».

Или у нас есть строка «GitVerse». При итерации по ней происходит разбиение на символы:

  • ●  первый — G;
  • ●  второй — i;
  • ●  третий — t;
  • ●  четвертый— V,и так далее.Каждая буква будет элементом итерируемого объекта. Код может выглядеть так:Gitverse_list = [39, 89, -90, 9536]for num in Gitverse_list:print(num)Разберем построчно, что в нем происходит:
  • ●  Gitverse_list = [39, 89, -90, 9536] — задаем итерируемый объект Gitverse_list;
  • ●  for num in Gitverse_list—указываем,что нам нужны элементы итерируемогообъекта (num) в итерируемом объекте Gitverse_list;
  • ●  print(num) — выдаем инструкцию, что нужно сделать, — вывести num.
Пример цикла for в Python
Пример цикла for в Python

Результат выполнения кода — вывод в консоли списка с числами по отдельности (элементами итерируемого объекта):

● 39;● 89;● –90; ● 9536.

Прерывание цикла: ключевое слово breakЭтот оператор (the break statement) останавливает цикл. Делает проход один раз — и

сразу выходит из него.Возьмем пример выше, с дождем. Если использовать break, мы как бы говорим: «Хватит

сидеть дома! Идем гулять даже в дождь!». Как выглядит код:i=2while i < 10:

print('Цикл выполнен', i, 'раз(а)') i=i+1break

Что в нем происходит:

  • ●  i = 2 — мы задаем переменную i и указываем ее значение, равное 2;
  • ●  while i < 10: — указываем нужное нам условие (пока i будет меньше 10);
  • ●  print('Цикл выполнен', i, 'раз(а)')иi = i+1—даем инструкцию,что сделать:вывести фразу в скобках и увеличить i на 1;
  • ●  break — приказываем остановиться после первой итерации.
Пример использования оператора break в Python
Пример использования оператора break в Python

Результат — в консоли появляется фраза «Цикл выполнен 2 раз (а)». То есть мы взяли только начальное значение i и не успели приплюсовать к нему 1, как в примере выше. Все потому, что сработал break: мы выполнили одну итерацию и вышли из loop.

Пропуск части цикла: ключевое слово continueОператор continue (the continue statement) прерывает проход цикла, который идет в

данный момент, и переходит сразу на следующий.Continue позволяет «проскочить» определенную итерацию по аналогии с тем, как мы

проскакиваем станцию метро и едем до следующей. Код выглядит таким образом:i=2while i < 10:

ifi!=5:print('Цикл выполнен', i, 'раз(а)')

i=i+1

continue

Пример использования оператора continue в Python
Пример использования оператора continue в Python

В консоли видим, что пятерку действительно «проскочили». Появляются значения 2, 3, 4, 6, 7, 8 и 9. Как это происходит? Пока условие «i не равна 5» было истиной, выводились 2, 3, 4. Затем условие «i не равна 5» стало ложным, и эту итерацию мы пропустили. После чего «вернулись в работу» и вывели оставшиеся 6, 7, 8, 9.

Последнее действие в цикле: ключевое слово elseElse — ключевое слово «иначе». Оно дает инструкцию, что делать после выполнения

итераций, но до выхода из цикла.Пример кода с использованием конструкции else: Gitverse_list = [1,2,3,4,5]for i in Gitverse_list:

print(i) else:

print ('Список пуст')

Пример использования оператора else в Python
Пример использования оператора else в Python

Результат — вывод чисел 1, 2, 3, 4, 5. Затем срабатывает else, благодаря чему появляется фраза «Список пуст». Можно заменить ее на любую другую: «Привет» или «End».

Изменим пример и подставим пустой объект, по которому якобы должна осуществляться итерация:

Gitverse_list = []for i in Gitverse_list:

print(i) else:

print ('Список пуст')

Другой пример использования оператора else в Python
Другой пример использования оператора else в Python

Итак, что происходит «под капотом». Перед запуском цикла компилятор проверяет наличие элементов в Gitverse_list. Поскольку там пусто, то заходить в цикл с for не имеет смысла (нет элементов для итерирования): это лишнее действие, которое нагружает систему. Поэтому «фор» не запускается, а сразу происходит выход на блок else. Благодаря тому, что сработал else, появляется «Список пуст».

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

Это цикл, в котором условие выполнения всегда true (истина). К примеру, оно звучит так: «пока 1 == 1» («до тех пор, пока единица равна единице»). Единица всегда равна единице, поэтому проверка показывает true, и блок с инструкцией повторяется бесконечно, пока не будет остановлен.

С бесконечными циклами нужно быть осторожными. Представьте, что на компьютере работает калькулятор, постоянно прибавляющий 1 к предыдущему значению. Процесс отнимает ресурсы машины. А что если таких процессов больше тысячи?

Пример кода на Python: i = 'Gitverse'while 1 == 1:

print('Выполняется бесконечно', i) Чем в нем происходит:

● i = 'Gitverse' — задаем i в виде строки 'Gitverse';

  • ●  while 1 == 1: — указываем условие, которое всегда будет истиной (можно просто написать while true;
  • ●  print('Выполняется бесконечно', i) — даем инструкцию, что делать (выводить фразу 'Выполняется бесконечно' и значение i).
Пример бесконечного цикла в Python
Пример бесконечного цикла в Python

Результат — беспрерывное выполнение кода в терминале. Процесс остановился только после команды пользователя.

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

Циклы в Python можно вкладывать друг в друга. Внутренний loop будет повторяться столько раз, сколько указано в условиях внешнего (при этом важно не уйти в неконтролируемый бесконечный).

Пример кода: 

Gitverse_list = [1,2,3,4,5] for number in Gitverse_list:

print(f'Итерируюсь по внешнему циклу: {number}') Gitverse_list_second = [10, 20, 30, 40, 50]for i in Gitverse_list_second:

print(f'Итерируюсь по внутреннему циклу: {i}')

На первой итерации внешнего цикла (при проходе по Gitverse_list) алгоритм обнаруживает цикл для Gitverse_list_second. В результате на первой итерации внешнего loop выполняются все итерации вложенного в него внутреннего. Затем выходим из внутреннего, попадаем на вторую итерацию внешнего и снова на итерацию вложенного в него внутреннего.

Пример вложенного цикла в Python
Пример вложенного цикла в Python
Пример выполнения вложенного цикла в Python
Пример выполнения вложенного цикла в Python

В статье мы рассмотрели основные циклы Python («фор», «вайл»), их синтаксис и применение, разобрали ключевые слова. Приведенные примеры — сильно упрощенные, на крупных проектах код в разы сложнее и объемнее, однако принцип работы будет тот же.