Цикл в программировании — конструкция, которая многократно выполняет блок кода. В статье разберём, что такое цикл, какие бывают виды, чем for в Python отличается от классического «цикла со счётчиком», как работают break и continue, и покажем типичные ошибки на коде — с фактическим результатом и исправлением.
Содержание
Что такое цикл простыми словами
Цикл позволяет выполнить блок кода несколько раз: для каждого элемента последовательности, заданное число раз или пока выполняется условие. Тело цикла — повторяемый блок; одно повторение называют итерацией. Цикл может выполнить тело и ноль раз — например, while с изначально ложным условием или for по пустой коллекции.
Виды циклов
for — перебор элементов
В Python for перебирает элементы итерируемого объекта и заканчивается, когда элементы исчерпаны:
for participant in participants:
print(participant)
range() создаёт числовую последовательность — это частный случай перебора, а не определение for:
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
Управление переходом к следующему элементу спрятано в протоколе итерации — в Python его не видно как явный «шаг».
while — цикл с условием
n = 1
while n <= 5:
print(n)
n += 1
Три явных элемента — начальное состояние, условие продолжения и шаг — хорошо видны в while и в C-подобном for со счётчиком. Это модель цикла со счётчиком, а не свойство любого цикла: в Python for по коллекции такого явного шага нет.
do-while и его аналог в Pascal
В C, C++ и Java есть do … while: тело выполняется хотя бы раз, а условие проверяется в конце и означает продолжение. В Pascal близкую роль играет repeat … until, но условие у него задаёт момент выхода (цикл завершается, когда условие становится истинным) — это противоположная полярность. В Python отдельного do-while нет, его эмулируют через while с проверкой в конце.
Управление циклом: break и continue
break — немедленно выходит из цикла. continue — пропускает остаток тела и переходит к следующей итерации.
for x in range(1, 100):
if x % 7 == 0:
print(x) # 7
break
Пример continue: вывести только нечётные числа.
for x in range(1, 6):
if x % 2 == 0:
continue # пропускаем чётные
print(x) # 1, 3, 5
Типичные ошибки — на коде
1. Бесконечный цикл из-за забытого шага.
n = 1
while n <= 5:
print(n) # печатает 1 бесконечно: n не меняется
Исправление: добавить n += 1 в тело. При этом бесконечный цикл не всегда ошибка: намеренный while True: с условием выхода (break, событие, ожидание ввода) — нормальная практика в обработчиках событий, сервисах и игровых циклах. Ошибка — цикл без предусмотренного способа остановки, который тратит ресурсы впустую.
2. Изменение коллекции во время перебора.
nums = [1, 2, 2, 3]
for x in nums:
if x == 2:
nums.remove(x) # пропустит второй 2 из-за сдвига индексов
Безопасно — идти по копии (for x in nums[:]) или собирать новый список (nums = [x for x in nums if x != 2]).
3. Ошибка на единицу (off-by-one). Внимательно с границами: range(1, 6) даёт 1..5, не 1..6.
Где применяются циклы
Выводы
- Цикл в программировании — конструкция, которая многократно выполняет блок кода: для каждого элемента последовательности, заданное число раз или пока выполняется условие; одно повторение называют итерацией.
- Основные виды циклов: for — перебор элементов, while — проверка условия перед каждой итерацией, do-while (C, C++, Java) — тело выполняется хотя бы раз, а условие проверяется в конце; в Pascal близкую роль играет repeat-until, но его условие задаёт момент выхода.
- В Python for перебирает элементы итерируемого объекта, а range() — лишь частный случай перебора чисел; явная модель «начальное состояние — условие — шаг» описывает цикл со счётчиком (while, C-подобный for), а не любой цикл.
- Цикл может выполнить тело ноль раз — например, while с изначально ложным условием или for по пустой коллекции.
- break немедленно выходит из цикла, а continue пропускает остаток тела и переходит к следующей итерации.
- Типичные ошибки — бесконечный цикл из-за забытого шага, изменение коллекции во время перебора (безопасно идти по копии или собирать новый список) и ошибка на единицу в границах range(); при этом намеренный while True с условием выхода — штатная практика, ошибкой считается цикл без способа остановки.
Перебор данных, обработка файлов и строк, работа с массивами, алгоритмы поиска и сортировки, обучение моделей по эпохам в ML. Основы программирования и работу с циклами разбирают на курсах Otus для начинающих — формат можно посмотреть на бесплатных открытых уроках Otus. Подобрать курс по языку помогает каталог курсов по программированию.
FAQ
Что такое цикл простыми словами? Конструкция, которая многократно выполняет блок кода: по элементам последовательности, заданное число раз или пока верно условие.
Чем for в Python отличается от «цикла со счётчиком»? for перебирает элементы итерируемого объекта; range() — лишь частный случай с числами.
Всегда ли бесконечный цикл — ошибка? Нет: намеренный while True с условием выхода — штатная практика; ошибка — цикл без способа остановки.
Смежные темы в журнале: Введение в рекурсию, Основы разработки на Python.



