Медиаблог /

Циклы в Python: что такое, как работают for и while

26 июня 2026

Циклы в Python: что такое, как работают for и while

Цикл в Python — конструкция для многократного выполнения блока кода без его копирования. Циклы Python двух типов: for перебирает элементы последовательности, while работает пока условие истинно. Оба поддерживают операторы break, continue и else. Точка входа: for i in range(5): print(i) выводит числа от 0 до 4 — без пяти строк print().

Абстрактная схема петли повторения — циклы Python for и while

Что такое цикл в Python

Цикл — синтаксическая конструкция, которая выполняет повторяющиеся действия без дублирования строк кода. У любого цикла два обязательных компонента: условие (или итерируемый объект) и тело цикла — блок команд с отступом 4 пробела. Без одного из них конструкция невалидна.

Один проход тела называется итерацией. Нужно вывести числа от 1 до 100? Цикл сделает это за одну запись вместо сотни строк print(). Именно для замены ручного копирования блоков кода нужны циклы в программировании — это базовый инструмент любого алгоритма.

Схема цикла Python: условие, тело, следующая итерация и выход

Цикл for в Python

Цикл for выбирают, когда число итераций определяется самим объектом или коллекцией, а не внешним условием. Он подходит для перебора списков, строк, словарей и числовых диапазонов — там, где последовательность известна или чётко ограничена заранее.

Синтаксис for и итерируемые объекты

Синтаксис: for [переменная] in [итерируемый объект]: — тело с отступом 4 пробела. Переменную принято именовать i, j, k; если значение внутри тела не нужно — пишут _.

Итерируемый объект — любой тип с методом __iter__: список, кортеж, строка, словарь, range, множество.

Тип
Пример
Что перебирает
Список [1, 2, 3] Элементы по порядку
Кортеж (1, 2, 3) Элементы по порядку
Строка «abc» Символы поочерёдно
Словарь {«a»: 1} Ключи
range range(5) Целые числа последовательности
Множество {1, 2, 3} Элементы (порядок не гарантирован)

Минимальный рабочий пример — перебор списка:

fruits = [«яблоко», «банан», «вишня»]

for fruit in fruits:

print(fruit)

# яблоко

# банан

# вишня

Код цикла for с range() в Python и результат в консоли

Функция range() — числовые диапазоны

range() — встроенный тип данных Python (не функция), возвращает последовательность целых чисел. Три формы записи:

  • range(n) — числа от 0 до n−1;
  • range(k, n) — от k до n−1;
  • range(k, n, s) — с шагом s.

Отрицательный шаг задаёт обратный перебор: range(5, 0, -1) вернёт 5, 4, 3, 2, 1. Пустой диапазон — range(1, 5, -1) — ошибки не вызывает: итераций просто 0, цикл пропускается.

Генератор списков — однострочный for

Генератор списков — компактная запись цикла for в одну строку:

squares = [x**2 for x in range(5)]

# [0, 1, 4, 9, 16]

С фильтром: [x for x in range(10) if x % 2 == 0] — только чётные числа. Это синтаксический сахар (syntactic sugar): новой функциональности нет, запись короче. Если логика сложнее одного условия — обычный for читается понятнее.

Цикл while в Python

Блок-схема цикла while в Python: True продолжает, False — выход

Цикл while применяют, когда количество итераций неизвестно заранее. Управляющий элемент — логическое условие, а не коллекция: конструкция продолжает выполняться, пока оно остаётся True, и останавливается при False. Типичные случаи — ожидание ввода пользователя или чтение данных до маркера завершения.

Работа условия и бесконечный цикл

Синтаксис: while [условие]: — тело. True — продолжает, False — останавливает:

n = 1

while n < 6:

print(n)

n += 1

# 1 2 3 4 5

Переменная-счётчик внутри тела обязана изменяться — иначе условие не станет False и программа зависнет в бесконечном выполнении. Аналог конструкции do-while из Java и C++: while True: — тело — if условие: break. Тело выполнится хотя бы раз, затем проверится условие выхода.

Бесконечный цикл while True в Python и аналог do-while с break

Моржовый оператор := в while

Оператор := введён в Python 3.8 по PEP 572 (Python Software Foundation). Он одновременно присваивает переменную и проверяет условие — в одной строке, убирая дублирование:

# Без оператора := — переменная нужна дважды

data = input(«Введите: «)

while data != «СТОП»:

print(data)

data = input(«Введите: «)

# С оператором := — компактнее

while (data := input(«Введите: «)) != «СТОП»:

print(data)

До и после: моржовый оператор := в цикле while Python

Управление циклом: break, continue и else

Три оператора управляют потоком исполнения внутри любого цикла Python — и for, и while. Они позволяют досрочно выйти, пропустить итерацию или выполнить финальный блок после завершения.

break — досрочный выход из цикла

break немедленно завершает цикл при срабатывании условия внутри тела. Применяют для поиска элемента или выхода из бесконечного цикла:

for char in «Python»:

if char == «h»:

break

print(char)

# P y t

Ключевой момент: break блокирует выполнение else-блока. Если цикл прерван через break — else не выполняется.

continue — пропуск итерации

continue пропускает остаток тела и переходит к следующей итерации — цикл не завершается, только текущий шаг пропускается. Используют для фильтрации нежелательных элементов:

for i in range(10):

if i % 2 == 0:

continue

print(i)

# 1 3 5 7 9

Ключевое отличие от break: при continue цикл продолжается; при break — останавливается полностью.

else в цикле — уникальность Python

else выполняется после всех итераций при естественном завершении цикла. Если цикл прерван через break — else пропускается:

# else выполняется — break не было

for i in range(3):

print(i)

else:

print(«Готово») # выведется

# else НЕ выполняется — сработал break

for i in range(3):

if i == 1:

break

else:

print(«Не выведется»)

Это эксклюзивная конструкция Python: в Java и C++ такого else у цикла нет — там нужен отдельный if-else вне тела.

Инфографика: break блокирует else в цикле Python, без break — выполняется

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

Вложенный цикл for в Python — таблица умножения в консоли

Вложенный цикл — цикл внутри тела другого. Каждый уровень вложенности добавляет +4 пробела отступа. Общее число итераций равно произведению итераций всех уровней: внешний 3 × внутренний 3 = 9.

Классический пример — таблица умножения:

for i in range(1, 4):

for j in range(1, 4):

print(i * j, end=»\t»)

print()

# 1 2 3

# 2 4 6

# 3 6 9

Внешний цикл for перебирает строки, внутренний — столбцы. Результат: матрица 3×3 с девятью значениями.

for против while — как выбрать

Критерий
for
while
Когда использовать Известная коллекция или диапазон Динамическое условие, число шагов неизвестно
Тип условия Итерируемый объект Логическое выражение
Риск Низкий Бесконечный цикл при ошибке в условии
Компаньоны range(), enumerate(), zip() Флаги, счётчики, пользовательский ввод
Синтаксис for x in iterable: while условие:

Правило выбора: for — для списков и числовых диапазонов; while — когда нужно ждать события или изменения значения. Оба типа цикла применяются под конкретную задачу, а не из предпочтений разработчика.

Освоить циклы Python и другие ключевые конструкции языка на практике можно на курсе «Программирование: Уверенный старт» — бесплатно, онлайн, с реальными проектами с первого урока.

Часто задаваемые вопросы

Чем отличается цикл for от while в Python?

for перебирает элементы коллекции или range — количество итераций определяется объектом. while выполняется, пока условие True — число шагов может быть неизвестно. Выбирайте for для списков и числовых диапазонов, while — когда нужно ждать события или изменения значения.

Что такое вложенный цикл простыми словами?

Вложенный цикл — цикл внутри тела другого. На каждую итерацию внешнего цикла внутренний выполняется полностью. Итого: N×M итераций. Применяется для таблиц, матриц и перебора пар элементов из двух коллекций.

Как сделать аналог do-while в Python?

В Python нет конструкции do-while. Аналог: while True: — тело — if условие: break. Такой цикл гарантированно выполнится хотя бы раз, после чего проверит условие выхода.

Как остановить бесконечный цикл в Python?

Добавьте break внутри тела при выполнении нужного условия. Либо измените переменную-флаг: condition = False — цикл завершится на следующей проверке. При зависании программы — Ctrl+C в терминале принудительно прерывает выполнение.

Простые задачи на циклы для начинающих?

Три задачи для старта: 1) вывести числа 1–10: for i in range(1, 11): print(i); 2) сумма элементов списка: total = 0; for x in lst: total += x; 3) угадать число: while со счётчиком попыток. Запускайте каждый вариант и отслеживайте вывод.

Задача на вложенные циклы — таблица умножения

for i in range(1, 6): for j in range(1, 6): print(i*j, end=»\t»); print() — матрица 5×5. Внешний цикл по строкам, внутренний по столбцам. Всего 25 итераций: 5 × 5. Классическая учебная задача на вложенные циклы Python.

Что такое генератор списков в Python?

Однострочный for: [x**2 for x in range(5)] → [0, 1, 4, 9, 16]. С условием: [x for x in range(10) if x % 2 == 0] — только чётные числа. Синтаксический сахар: функциональность идентична обычному for, запись компактнее.

Как использовать материал о циклах в учебных презентациях?

Структура по блокам: определение → for с range → while с условием → break/continue/else → вложенные циклы. Каждый блок — отдельный слайд с примером кода и выводом. Для else: два контрастных примера с break и без — лучший способ показать разницу.