💻 Практические примеры

⚡ Минимальный рабочий пример

for i in range(5):
    print(i)

Этот код выводит числа от 0 до 4. Цикл for сам управляет счётчиком — не нужно увеличивать i вручную.

ЗадачаПриём
Числа в диапазонеrange(start, stop, step)
Досрочный выходbreak
Пропустить итерациюcontinue
Не нашли — elsefor ... else: выполняется без break
Индекс + элементenumerate(seq, start=1)
Топ-3 ошибки: забыть двоеточие после заголовка for · перепутать break и continue · думать, что else всегда выполняется после цикла, а не только без break.

В коде ниже места, где в исходном задании использовался input(), заменены на фиксированные значения — так весь код урока можно склеить в один файл и запустить целиком. В интерактивной версии верните input() самостоятельно.

Пример 1: Счётчик с range

Классический пример использования range(): вывод чисел от 1 до n.

📄 examples/counter.py
n = 5  # в интерактивной версии: int(input("Enter n: "))

for i in range(1, n + 1):
    print(i)

Что происходит:

  1. range(1, n + 1) создаёт последовательность от 1 до n включительно.
  2. Каждое число печатается на отдельной строке.
  3. Если забыть + 1, число n выпадет из вывода — см. Ошибки урока, ошибка 3.

Пример 2: Факториал числа

Задание 2 из практических заданий: произведение всех чисел от 1 до n без модуля math.

📄 examples/factorial.py
n = 5  # в интерактивной версии: int(input("Enter n: "))
factorial = 1

for i in range(1, n + 1):
    factorial *= i

print(f"Факториал числа {n} равен {factorial}")

Логика: factorial — накопитель, начинаем с 1 (нейтральный элемент умножения). На каждой итерации умножаем накопленное значение на очередное число из range(1, n + 1).

Пример 3: Сумма цифр числа

Программа запрашивает число и складывает его цифры. Здесь удобно итерировать строковое представление числа.

📄 examples/sum_digits.py
number = "12345"  # в интерактивной версии: input("Enter a number: ")
digit_sum = 0

for digit in number:
    digit_sum += int(digit)

print(f"Sum of digits: {digit_sum}")

Логика:

  • Число хранится как строка, чтобы можно было перебирать цифры по одной.
  • Каждый символ преобразуется в int и добавляется к сумме.
  • Не требуется делить число на 10 в цикле.

Пример 4: Подсчёт гласных в строке

Перебор строки с проверкой вхождения символа в множество.

📄 examples/count_vowels.py
text = "Programming".lower()  # в интерактивной версии: input("Enter text: ").lower()
vowels = "aeiou"
count = 0

for letter in text:
    if letter in vowels:
        count += 1

print(f"Vowels: {count}")

Пример 5: Буквы и цифры в строке (★ дополнительное)

Задание 5 из практических заданий: подсчитать отдельно буквы и цифры за один проход.

📄 examples/letters_and_digits.py
text = "Python 3.12"  # в интерактивной версии: input("Enter string: ")
letters = 0
digits = 0

for char in text:
    if char.isalpha():
        letters += 1
    elif char.isdigit():
        digits += 1

print(f"Букв: {letters}")
print(f"Цифр: {digits}")

Логика: isalpha() и isdigit() проверяют каждый символ по очереди; пробел и точка не подходят ни под одно условие и просто пропускаются.

Пример 6: Разные варианты range

📄 examples/range_patterns.py
# Even numbers from 0 to 10
for i in range(0, 11, 2):
    print(i, end=" ")
print()

# Countdown from 10 to 1
for i in range(10, 0, -1):
    print(i, end=" ")
print()

# Negative range
for i in range(-3, 4):
    print(i, end=" ")
print()

Почему так: направление step должно совпадать с направлением от start к stop — иначе последовательность окажется пустой без ошибки, см. Ошибки урока, ошибка 6.

Пример 7: break и continue в одном цикле

📄 examples/for_break_continue.py
for i in range(1, 11):
    if i == 3:
        continue  # skip 3
    if i == 7:
        break     # stop before 7
    print(i, end=" ")
# Output: 1 2 4 5 6

Почему так: continue пропускает только текущую итерацию и цикл продолжается, а break прекращает цикл целиком — их легко перепутать, см. Ошибки урока, ошибка 5.

Пример 8: Простое число (for/else)

Задание 4 из практических заданий: канонический пример использования for/else — проверка, есть ли у числа делители.

📄 examples/is_prime.py
def is_prime(number):
    if number < 2:
        return False
    for divisor in range(2, number):
        if number % divisor == 0:
            return False
    else:
        return True

for candidate in (11, 12):  # в интерактивной версии: int(input("Enter number: "))
    if is_prime(candidate):
        print(f"{candidate} является простым")
    else:
        print(f"{candidate} не является простым")

Как проверить себя: блок else цикла for выполняется, только если цикл дошёл до конца без break — то есть делитель не нашёлся. Это отличается от заблуждения, что else выполняется всегда, см. Ошибки урока, ошибка 7.

Пример 9: Поиск символа с for/else

📄 examples/search_for_else.py
text = "Python"  # в интерактивной версии: input("Enter text: ")

for target in ("h", "z"):  # в интерактивной версии: input("Enter character to find: ")
    for letter in text:
        if letter == target:
            print(f"Found '{target}'")
            break
    else:
        print(f"'{target}' not found")

Пример 10: Вложенные циклы — таблица умножения и прямоугольник

Задание 3 из практических заданий: во вложенных циклах внешний цикл отвечает за строки, внутренний — за содержимое строки.

📄 examples/nested_shapes.py
n = 4  # в интерактивной версии: int(input("Enter n: "))

for i in range(1, n + 1):
    for j in range(1, n + 1):
        print(f"{i * j:4}", end="")
    print()

width, height = 5, 3  # в интерактивной версии: int(input(...)) для каждого значения
for row in range(height):
    for col in range(width):
        print("*", end="")
    print()

Пример 11: Комбинация while и for

📄 examples/while_for_hours.py
current_hour = 22  # в интерактивной версии: int(input("Enter current hour: "))
hours_to_show = 2
end_hour = current_hour + hours_to_show

while current_hour < 24 and current_hour < end_hour:
    for minute in range(60):
        print(f"{current_hour}:{minute:02d}")
    current_hour += 1

Логика: внешний цикл while перебирает часы, пока не дойдёт до полуночи или до конца интервала, внутренний for перебирает минуты каждого часа.

Пример 12: Индекс и элемент через enumerate

Современный способ получить индекс при итерации.

📄 examples/enumerate_example.py
words = ["apple", "banana", "cherry"]

for index, word in enumerate(words, start=1):
    print(f"{index}. {word}")
# Output:
# 1. apple
# 2. banana
# 3. cherry

Как запустить в VS Code

  1. Создайте файл example.py в папке урока.
  2. Скопируйте код из примера выше.
  3. Откройте терминал в VS Code (Ctrl + `).
  4. Убедитесь, что активировано виртуальное окружение: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  5. Запустите: python example.py