Вы когда-нибудь задумывались, сколько раз в жизни приходится повторять одни и те же действия? Представьте, что у вас есть огромный список товаров, и нужно подсчитать их стоимость, пройтись по каждому из них и выполнить какую-то операцию. Сколько времени вы бы потратили, если бы писали один и тот же код для каждого товара? Очевидно, что так работать не хочется.

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

Сегодня мы разберём, как использовать цикл for и цикл while для автоматизации повторяющихся задач. На примерах покажем, как не просто писать код, а делать его гибким и удобным для работы.

Начнём с простого: цикл for для обхода коллекций

Если вы хотите выполнить одно и то же действие для каждого элемента в списке, строке или другом наборе данных, используйте цикл for.

Пример: подсчёт суммы чисел

Давайте начнём с задачи, которая встречается очень часто: сложим все числа из списка. Используем цикл for для обхода элементов списка и получения нужного результата.

numbers = [5, 10, 15, 20, 25]
total = 0

for number in numbers:
    total += number

print(f"Сумма чисел: {total}")

Что происходит в коде?

  • Мы создаём список numbers с числами.
  • Переменная total изначально равна 0.
  • Цикл for проходит по каждому числу в списке numbers и добавляет его к общей сумме.
  • Когда цикл заканчивает работу, мы выводим результат.

Результат:

Сумма чисел: 75

Цикл for с диапазоном: когда не нужно проходить по коллекции

Но что если нам не нужно проходить по коллекции, а просто нужно выполнить действие несколько раз? Здесь на помощь приходит функция range().

Пример: вывод чисел от 1 до 5

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

Результат:

1
2
3
4
5

Здесь мы говорим Python: «Пройди по числам от 1 до 5 (включительно) и выведи их».

Как это работает?

  • range(1, 6) создаёт последовательность чисел от 1 до 5.
  • Цикл for проходит по каждому числу в этой последовательности и выводит его.

Цикл while: повторяем, пока не выполнится условие

Цикл for удобен, когда мы точно знаем, сколько раз нам нужно выполнить действие. Но что делать, если нам нужно повторять действия до тех пор, пока не выполнится какое-то условие? Здесь в игру вступает цикл while.

Пример: вывод чисел до тех пор, пока не достигнем 10

x = 1

while x <= 10:
    print(x)
    x += 1

Результат:

1
2
3
4
5
6
7
8
9
10

Как это работает?

  • Мы начинаем с x = 1.
  • Цикл while будет повторяться, пока условие x <= 10 остаётся истинным.
  • После каждого шага увеличиваем x на 1.
  • Когда x становится больше 10, условие больше не выполняется, и цикл завершится.

Когда использовать for, а когда while?

  • Если вы знаете, сколько раз нужно повторить действие (например, проход по списку или диапазону), используйте цикл for.
  • Если вы не знаете, сколько раз нужно повторить действие (например, пока не будет введено правильное значение), используйте цикл while.

Но есть одна важная вещь, о которой нужно помнить, когда вы работаете с циклом while: нужно обязательно обеспечить, чтобы цикл завершился в какой-то момент. Иначе он будет выполняться бесконечно, и программа «зависнет».

Бесконечный цикл (не пытайтесь это запускать!)

while True:
    print("Это бесконечный цикл!")

Этот цикл будет выполняться вечно, потому что условие True всегда истинно. Чтобы выйти из бесконечного циклу, используйте команду break.

Вложенные циклы: когда нужно что-то более сложное

В реальных задачах бывает нужно пройти по каждому элементу внутри другого элемента. Это называется вложенными циклами.

Пример: таблица умножения

Давайте теперь сделаем что-то интересное: выведем таблицу умножения.

for i in range(1, 11):  # для каждого числа от 1 до 10
    for j in range(1, 11):  # умножаем его на каждое число от 1 до 10
        print(f"{i} * {j} = {i * j}")
    print("-" * 20)  # разделитель для каждой строки таблицы

Результат будет следующим:

1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
...
--------------------
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
...

Как это работает?

  • Внешний цикл for i in range(1, 11) проходит по числам от 1 до 10.
  • Внутренний цикл for j in range(1, 11) умножает текущее число i на каждое число от 1 до 10.
  • После завершения каждого ряда таблицы выводим разделитель для ясности.

Заключение

  • Циклы помогают избежать повторений в коде. Вместо того чтобы писать одно и то же несколько раз, вы просто говорите программе: «Повторяй это за меня».
  • Цикл for лучше всего подходит для обхода коллекций (списки, строки, диапазоны).
  • Цикл while используется, когда мы не знаем, сколько раз нужно повторить действие, и цикл будет выполняться, пока выполняется условие.
  • Вложенные циклы позволяют работать с более сложными структурами данных, такими как матрицы или таблицы.

Практическое применение циклов

Теперь давайте немного усложним задачу и применим циклы на практике.

Задача 1: сумма чётных чисел

Напишите программу, которая суммирует все чётные числа от 1 до 100 и выводит результат.

Задача 2: поиск минимального и максимального значения в списке

У вас есть список чисел. Напишите программу, которая найдёт минимальное и максимальное значение в списке, используя циклы.

Задача 3: создание пароля

Напишите программу, которая будет генерировать случайный пароль длиной 8 символов. Используйте цикл для генерации символов, а модуль random — для выбора случайных символов.

В следующей статье мы перейдём к функциям. Функции — это способ организовать код, сделать его более понятным и удобным для использования.