В языке программирования Python циклы — это основной инструмент, который позволяет многократно выполнять определённый блок кода. Они полезны, когда нам нужно запустить один и тот же код несколько раз, возможно, с разными значениями каждый раз.
При написании кода на Python существует несколько способов реализации циклов, но наиболее распространенными являются:
- Цикл for.
- Цикл while.
Оба цикла позволяют многократно выполнять блок кода, но делают это по-разному и по разным причинам. Давайте рассмотрим их по отдельности и разберемся в каждом из них.
- Цикл for в Python
- Цикл while в Python
- Ситуация без условий в циклах
- Для цикла for
- Цикл while
- Операторы управления циклом
- Различия меду циклами for и while
Цикл for в Python
В языке программирования Python цикл for используется для последовательного перебора элементов в списке, кортеже, словаре, строке или диапазоне. Во время каждой итерации текущий элемент последовательности присваивается специальной переменной, после чего выполняется блок кода, находящийся внутри цикла.
Синтаксис:
for variable in sequence: # Code to execute for each item
Ключевые компоненты:
- переменная — это временный заполнитель для текущего элемента в последовательности в Python.
- последовательность — последовательность Python, которую мы хотим перебрать.
- :– Python использует отступы для определения блоков кода. Двоеточие в конце оператора for указывает на начало этого блока.
- Блок кода с отступом. Код Python, который будет выполняться для каждого элемента последовательности.
Блок-схема цикла For:
Рассмотрим список популярных городов США:
cities = ["New York", "Los Angeles", "Chicago", "Houston", "Phoenix"] for city in cities: print(city)
Выход:
New York Los Angeles Chicago Houston Phoenix
Этот цикл For в Python будет последовательно печатать каждый город в списке.
Варианты использования цикла for Python:
- Перебор последовательностей (списков, строк, словарей, кортежей, наборов).
- Когда количество итераций известно заранее.
Цикл while в Python
Цикл while в Python будет выполнять блок кода до тех пор, пока условие, указанное в нём, остаётся истинным. Важно, чтобы это условие могло стать ложным, иначе цикл будет выполняться бесконечно (получится так называемый бесконечный цикл).
В Python цикл while является более универсальным, чем цикл for. Он используется для многократного выполнения блока операторов до тех пор, пока условие остаётся истинным.
Синтаксис:
while condition: # code to execute while the condition is True
Ключевые компоненты:
- Инициализация: перед запуском цикла Python while обычно инициализируются переменные, которые будут использоваться в условии цикла.
- Условие: условие цикла проверяется перед каждой итерацией. Если условие истинно, выполняется код внутри цикла Python while. Если условие ложно, цикл завершается и программа переходит к следующей строке кода после цикла.
- Тело цикла: это код, который выполняется для каждой итерации цикла while. Важно гарантировать, что что-то внутри тела цикла Python в конечном итоге изменит условие на False, чтобы предотвратить бесконечное выполнение цикла(так называемый бесконечный цикл).
- Модификация: внутри тела цикла переменные, участвующие в условии цикла, обычно изменяются, чтобы гарантировать, что условие может в конечном итоге стать ложным.
Блок-схема цикла While:
Давайте рассмотрим типичный американский ритуал — накопление денег на крупную покупку, например, на автомобиль. Если мы начнём с нуля и будем откладывать по 200 долларов в месяц, то с помощью Python можно рассчитать, за сколько месяцев мы сможем накопить 5000 долларов.
savings = 0 months = 0 while savings < 5000: savings += 200 months += 1 print(f"It will take {months} months to save up $5000.")
Выход:
It will take 25 months to save up $5000.
Цикл while завершится, когда экономия достигнет 5000.
Варианты использования цикла for Python:
- Когда количество итераций заранее неизвестно.
- Продолжать выполнять блок кода до тех пор, пока определенное условие не будет выполнено или не перестанет иметь значение True.
Ситуация без условий в циклах
Если в циклах for и while не указано условие прекращения их работы, они будут выполняться бесконечно. Разница между циклами while и for в Python состоит в следующем:
Для цикла for
В отличие от некоторых других языков программирования, таких как C или C++, цикл for в Python не зависит от условия. Вместо этого он перебирает элементы последовательности или другие итерируемые объекты до тех пор, пока они не будут полностью обработаны. «Условием» для продолжения работы цикла является наличие следующего элемента в последовательности. Когда все элементы обработаны, цикл завершается.
Однако в Python мы можем создать ситуацию, когда цикл for перейдёт в бесконечный цикл. Например, представим, что нам нужно вывести названия всех штатов США, но по какой-то ошибке мы добавляем каждое название штата обратно в список Python. Это, конечно, фантастический и бессмысленный сценарий, но он иллюстрирует основную идею: мы можем создать условия, при которых цикл будет выполняться бесконечно.
states = ["California"] for state in states: print(state) states.append(state)
- Первоначально список штатов Python содержал только один штат: «Калифорния».
- Цикл for Python запускается и выбирает первый элемент из списка состояний «Калифорния» и присваивает его переменной состояния.
- Внутри цикла код печатает название штата, которым изначально будет «Калифорния».
- Сразу после этого код добавляет имя этого состояния обратно в список состояний.
- По мере продолжения цикла он находит в списке штатов еще один элемент, которым снова является «Калифорния»(поскольку мы добавили его во время первой итерации).
- Этот процесс повторяется бесконечно, печатая «Калифорния» снова и снова и постоянно добавляя «Калифорнию» в список.
Вывод: этот код будет продолжать печатать сообщение до тех пор, пока вы принудительно не остановите программу Python.
California California California California California California California California California California California California . . California
Цикл while
В Python для цикла while необходимо указать условие. Если мы укажем значение или выражение, всегда равное True, то создадим бесконечный цикл, который будет выполняться до тех пор, пока его не прервут или извне не будет использован оператор Break.
Если же мы ищем эквивалент цикла, который выполняется бесконечно, то можем использовать конструкцию «while True:». Это распространённый шаблон для создания бесконечного цикла в Python.
Представьте, что вы зашли в закусочную и увидели табличку с надписью: «Бесплатная еда каждые 5 минут, если вы здесь останетесь!» Если вы решите остаться в этой закусочной исключительно из-за этой вывески, то никогда не уйдёте. Каждые 5 минут вам будут подавать еду, и этому не будет конца. Эта закусочная похожа на бесконечный цикл, в котором постоянно подают еду (или выполняют команды) без остановки.
Давайте смоделируем простую программу на Python, которая будет постоянно отправлять сообщение «Наслаждаюсь едой в закусочной в США!».
while True: # This creates an infinite loop print("Enjoying food at the USA diner!") # A break statement or external interruption is needed to exit this loop.
Вывод: этот код Python будет продолжать печатать сообщение до тех пор, пока вы принудительно не остановите программу.
Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! Enjoying food at the USA diner! . . Enjoying food at the USA diner!
Эту ситуацию отсутствия условий в Python можно обработать с помощью операторов управления циклом.
Операторы управления циклом
В Python операторы управления циклом помогают нам контролировать выполнение кода внутри циклов. Они позволяют изменить поведение цикла, пропуская некоторые части или завершая его раньше времени.
Есть три основных оператора управления циклом: прерывание (break), продолжение (continue) и ещё один оператор.
Break | Оператор Break используется для преждевременного выхода из текущего цикла Python. Он вырывается из самой маленькой замыкающей петли. |
continue | Оператор continue используется для пропуска оставшейся части текущей итерации и перехода к следующей итерации цикла Python. |
else | Предложение else в цикле выполняется, когда цикл завершает перебор итерируемого объекта (для циклов for) или когда условие становится ложным (для циклов while) в Python. Блок else не выполняется, если цикл Python завершается оператором прерывания. |
Различия меду циклами for и while
Давайте рассмотрим различия между циклами for и while в языке программирования Python с помощью таблиц. В столбцах я приведу различные основы, которые определяют выбор того или иного цикла, а также опишу разные условия для циклов for и while.
База разницы для сравнения |
Цикл for | Цикл while |
---|---|---|
Декларация | для переменной в итерации: # тело цикла |
пока состояние: # тело цикла |
Основа итерации | Выполняет итерацию по последовательности или повторяемым объектам в Python. | Выполняется до тех пор, пока условие остается истинным в Python. |
Инициализация | Инициализация выполняется во время определения цикла Python (например, для состояния в состояниях 🙂 | Инициализация обычно выполняется перед циклом Python (например, деньги = 1000). |
Прекращение действия | Завершается, когда все элементы в последовательности Python были пройдены. | Завершается, когда указанное условие становится ложным в Python. |
Гибкость | Лучше всего подходит для сценариев, в которых мы заранее знаем количество итераций или работаем с последовательностями Python. | Более гибкий в сценариях, где количество итераций неизвестно или зависит от динамических условий Python. |
Риск бесконечного цикла | Меньше риска, так как в Python работает с конечной последовательностью. | Более высокий риск, если условие никогда не становится ложным в Python. |
Изменение переменной управления циклом | Обычно не рекомендуется изменять переменную управления контуром. | Переменную управления циклом можно без проблем изменить внутри цикла. |