Добавить в корзинуПозвонить
Найти в Дзене

Циклы в Python просто и понятно

Циклы — это когда вы говорите компьютеру: «делай это пока условие истинно» и он повторяет действия за вас. В Python есть два самых часто используемых вида циклов: for and while. Поговорим о них просто и по делу fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
print("У меня в руках:", fruit) numbers = [1, 2, 3, 4, 5]
squares = []
for n in numbers:
squares.append(n * n)
print(squares) # [1, 4, 9, 16, 25] Если нужно и значение, и индекс: fruits = ["яблоко", "банан", "вишня"]
for i, fruit in enumerate(fruits):
print(i, fruit) for i in range(1, 10):
if i % 2 == 0:
continue
if i > 7:
break
print(i) count = 0
while count < 5:
print(count)
count += 1 answer = ""
while answer.lower() != "да":
answer = input("Хочешь продолжить? (да/нет): ")
print("Отлично, продолжаем!") Копировать кодsquares = [x*x for x in range(10)] Если хочешь, могу привести статью под конкретную задачу: например, как считать количество слов в тексте, или как обра
Оглавление

Циклы — это когда вы говорите компьютеру: «делай это пока условие истинно» и он повторяет действия за вас. В Python есть два самых часто используемых вида циклов: for and while. Поговорим о них просто и по делу

for: пройтись по последователю

  • Основная идея: пройтись по элементам какой‑то последовательности (список, строка, кортеж и т.д.) и сделать что‑то с каждым элементом.
  • Примерно так это выглядит в коде:

fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
print("У меня в руках:", fruit)

  • Преимущества:
  • Прост и читаем.
    Подходит для наборов элементов, чьи размеры хорошо известны
  • Частые применения: Прогонять элементы коллекции и собирать новый список.
    Пройтись по строке и обрабатывать символы.

Простой паттерн «для элемента в коллекции»

numbers = [1, 2, 3, 4, 5]
squares = []
for n in numbers:
squares.append(n * n)
print(squares) # [1, 4, 9, 16, 25]

С enumerate для индексов и значений

Если нужно и значение, и индекс:

fruits = ["яблоко", "банан", "вишня"]
for i, fruit in enumerate(fruits):
print(i, fruit)

Прерывание и продолжение

  • break — выйти из цикла полностью.
  • continue — перейти к следующей итерации (не выполняем оставшийся код внутри цикла для текущего элемента).

for i in range(1, 10):
if i % 2 == 0:
continue
if i > 7:
break
print(i)

while: цикл с условием

  • Основная идея: повторять блок кода до тех пор, пока условие истинно.
  • Пример:

count = 0
while count < 5:
print(count)
count += 1

  • Предупреждение: легко «застрять» в бесконечном цикле, если условие никогда не станет ложным. Добавляйте либо корректное изменение состояния внутри цикла, либо используйте break.

Пример с безопасной остановкой

answer = ""
while answer.lower() != "да":
answer = input("Хочешь продолжить? (да/нет): ")
print("Отлично, продолжаем!")

Как выбрать между for и while

  • Используйте for, когда заранее знаете набор элементов или когда нужно повторять фиксированное число раз. Примеры: пройтись по списку, по символам строки, по диапазону чисел, где диапазон известен.
  • Используйте while, когда условие зависит от чего‑то во время выполнения или когда количество повторений неизвестно заранее. Примеры: ждать ввода пользователя, читать файл до конца, ожидание какого‑то события.

Важно про «плохие» практики

  • Не превращайте бесконечные циклы в «молекулы» сложности. Если условие не ложно, цикл может уходить в пустоту.
  • Избегайте мутирования коллекций во время итерации по ним, если не используете защитные техники (например, копирование списка или comprehension с нужной логикой).
  • Для простых трансформаций коллекций используйте списочные включения (list comprehensions) — они часто короче и понятнее.

Быстрые трюки

  • Список через генератор:

Копировать кодsquares = [x*x for x in range(10)]

  • Прерывание цикла по условию внутри — break помогает не гонять лишний код.
  • Вложенные циклы — можно делать двумерные массивы, матрицы и т.д., но следите за читаемостью.

Итог

  • for — идеален для перебора элементов.
  • while — для условий, которые не привязаны к конкретному набору элементов.
  • Комбинации и конструкции вроде enumerate, range и list comprehensions делают циклочасы приятнее и продуктивнее.

Если хочешь, могу привести статью под конкретную задачу: например, как считать количество слов в тексте, или как обрабатывать файлы построчно с циклом.