В коде ниже места, где в исходном задании использовался input(), заменены на фиксированные значения — так весь код урока можно склеить в один файл и запустить целиком. В интерактивной версии верните input() самостоятельно.
Пример 1: Счётчик с range
Классический пример использования range(): вывод чисел от 1 до n.
n = 5 # в интерактивной версии: int(input("Enter n: "))
for i in range(1, n + 1):
print(i)
Что происходит:
range(1, n + 1)создаёт последовательность от1доnвключительно.- Каждое число печатается на отдельной строке.
- Если забыть
+ 1, числоnвыпадет из вывода — см. Ошибки урока, ошибка 3.
Пример 2: Факториал числа
Задание 2 из практических заданий: произведение всех чисел от 1 до n без модуля math.
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: Сумма цифр числа
Программа запрашивает число и складывает его цифры. Здесь удобно итерировать строковое представление числа.
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: Подсчёт гласных в строке
Перебор строки с проверкой вхождения символа в множество.
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 из практических заданий: подсчитать отдельно буквы и цифры за один проход.
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
# 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 в одном цикле
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 — проверка, есть ли у числа делители.
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
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 из практических заданий: во вложенных циклах внешний цикл отвечает за строки, внутренний — за содержимое строки.
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
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
Современный способ получить индекс при итерации.
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
- Создайте файл
example.pyв папке урока. - Скопируйте код из примера выше.
- Откройте терминал в VS Code (Ctrl + `).
- Убедитесь, что активировано виртуальное окружение:
venv\Scripts\activate(Windows) илиsource venv/bin/activate(Mac/Linux). - Запустите:
python example.py