Привет! Предлагаю изучить тему Цикл for в Python. На выбор два формата: видеолекция с преподавателем JavaRush университета или подробный текстовый разбор, который я подготовил специально для тебя.
Умный программист всегда найдет способ не делать работу дважды. Если он видит, что какая-то задача повторяется снова и снова, он автоматизирует процесс так, чтобы компьютер выполнил все сам. И главное - сделает это качественно с первого раза. Именно для автоматизации повторяющихся задач и были созданы циклы. Допустим, тебе нужно показать на экране все числа от 0 до 99. Без использования циклов код выглядел бы так:
print(0)
print(1)
print(2)
print(3)
print(4)
print(5)
# И так далее
Представляешь? Целых 100 строчек одинакового кода! Это же кошмар. А теперь посмотри, как элегантно решается та же задача с помощью цикла:
for i in range(100):
    print(i)
Всего 2 строки — и готово!

Что такое циклы for в Python?

Цикл for в Python это специальная конструкция в программировании, которая позволяет повторять один и тот же блок кода нужное количество раз. Вместо линейного выполнения программы сверху вниз, цикл заставляет код "крутиться" в одном месте. Представь жизненную ситуацию: тебе нужно накапать 30 капель настойки в стакан. Обычный алгоритм действий: 1. Взять стакан. 2. Открыть флакон. 3. Накапать 1-ю каплю. 4. Накапать 2-ю каплю. 5. ... 6. Накапать 30-ю каплю. 7. Закрыть флакон. 8. Выпить лекарство. Но ведь можно описать это намного проще: 1. Взять стакан. 2. Открыть флакон. 3. Накапать 30 капель. 4. Закрыть флакон. 5. Выпить лекарство. В повседневной речи мы постоянно используем подобные "циклы": "пройди еще 15 шагов прямо", "сделай 3 подхода по 10 приседаний", "купи 7 разных продуктов и получишь скидку"... Примеров масса, принцип всегда один и тот же. Вот и в Python цикл for служит для того, чтобы сделать код короче и понятнее.

Принцип работы цикла for в Python

В Python цикл for работает с итерируемыми объектами (списки, строки, кортежи, range и др.):
for <переменная> in <итерируемый_объект>:
    # Тело цикла
    <действия>
Пример перебора цифр от 0 до 4 и вывод каждой в консоль:
for i in range(5):
    print(i)
Вывод:
0
1
2
3
4
Если перевести данную запись на человеческий язык, получится следующее: "Для каждого числа i в диапазоне от 0 до 4 включительно выведи его значение в консоль." Основные стадии работы цикла for можно изобразить следующей схемой:Цикл for в Python - 1

Функция range()

Функция range() - основной инструмент для создания числовых последовательностей в циклах:
# range(stop) - от 0 до stop-1
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# range(start, stop) - от start до stop-1
for i in range(2, 7):
    print(i)  # 2, 3, 4, 5, 6

# range(start, stop, step) - от start до stop-1 с шагом step
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

Обратный цикл (от большего к меньшему)

for i in range(5, 0, -1):
    print(i)
Вывод:
5
4
3
2
1

Цикл for с различными типами данных

Перебор списка

fruits = ["яблоко", "банан", "апельсин"]
for fruit in fruits:
    print(fruit)
Вывод:
яблоко
банан
апельсин

Перебор строки

word = "Python"
for letter in word:
    print(letter)
Вывод:
P
y
t
h
o
n

Перебор с индексами

Если нужны и элемент, и его индекс, используй enumerate():
fruits = ["яблоко", "банан", "апельсин"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")
Вывод:
0: яблоко
1: банан
2: апельсин

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

В Python также можно создавать вложенные циклы. Количество итераций будет умножаться:
for i in range(3):
    print(f"{i} | ", end="")
    for j in range(5):
        print(j, end=" ")
    print()  # переход на новую строку
Вывод:
0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 

Работа с двумерными списками

Вложенные циклы идеально подходят для обхода двумерных структур:
matrix = [[0, 1, 2, 3, 4],
          [1, 2, 3, 4, 5],
          [2, 3, 4, 5, 6],
          [3, 4, 5, 6, 7]]

for row in matrix:
    for element in row:
        print(element, end=" ")
    print()  # переход на новую строку
Или с индексами:
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        print(matrix[i][j], end=" ")
    print()
Вывод:
0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Досрочное завершение цикла

Оператор break

Для прерывания цикла используется оператор break:
def find_first_position(string_list, element):
    for i, item in enumerate(string_list):
        if item == element:
            print(f"Элемент найден на позиции: {i}")
            break
    else:
        print("Элемент не найден")

# Пример использования
fruits = ["яблоко", "банан", "апельсин", "киви"]
find_first_position(fruits, "банан")
Вывод:
Элемент найден на позиции: 1

Оператор continue

Оператор continue пропускает текущую итерацию и переходит к следующей:
for i in range(10):
    if i % 2 == 0:  # если число четное
        continue    # пропускаем его
    print(i)        # выводим только нечетные
Вывод:
1
3
5
7
9

Конструкция for-else

В Python у цикла for есть уникальная особенность - блок else, который выполняется, если цикл завершился естественным образом (не через break):
def search_element(numbers, target):
    for num in numbers:
        if num == target:
            print(f"Элемент {target} найден!")
            break
    else:
        print(f"Элемент {target} не найден в списке")

# Примеры
numbers = [1, 3, 5, 7, 9]
search_element(numbers, 5)  # Элемент 5 найден!
search_element(numbers, 4)  # Элемент 4 не найден в списке

Полезные функции для работы с циклами

zip() - одновременный перебор нескольких последовательностей

names = ["Анна", "Борис", "Виктор"]
ages = [25, 30, 35]
cities = ["Токио", "Чикаго", "Рим"]

for name, age, city in zip(names, ages, cities):
    print(f"{name}, {age} лет, живет в {city}")
Вывод:
Анна, 25 лет, живет в Токио
Борис, 30 лет, живет в Чикаго
Виктор, 35 лет, живет в Рим

reversed() - обратный перебор

numbers = [1, 2, 3, 4, 5]
for num in reversed(numbers):
    print(num)
Вывод:
5
4
3
2
1

Бесконечный цикл

В Python бесконечный цикл обычно создают с помощью while True, а не for:
import itertools

# Бесконечный цикл с for (не рекомендуется)
for i in itertools.count():
    print(i)
    if i > 5:
        break
Но помни, что в большинстве случаев бесконечный цикл — свидетельство логической ошибки. У такого цикла обязательно должно быть условие выхода.