6. Циклы

for — основной цикл Python
Заголовок раздела «for — основной цикл Python»В Python for всегда итерирует по итерируемому объекту:
# По спискуfruits = ["apple", "banana", "cherry"]for fruit in fruits: print(fruit)
# По строкеfor char in "Python": print(char)
# По словарюuser = {"name": "Яша", "age": 2, "role": "admin"}
for key in user: # итерация по ключам print(key)
for value in user.values(): # по значениям print(value)
for key, value in user.items(): # по парам print(f"{key}: {value}")range()
Заголовок раздела «range()»# range(stop) — от 0 до stop-1for i in range(5): print(i) # 0, 1, 2, 3, 4
# range(start, stop)for i in range(1, 6): print(i) # 1, 2, 3, 4, 5
# range(start, stop, step)for i in range(0, 20, 5): print(i) # 0, 5, 10, 15
# Обратный счётfor i in range(10, 0, -1): print(i) # 10, 9, 8, ... 1enumerate() — индекс + значение
Заголовок раздела «enumerate() — индекс + значение»# Вместо: for i in range(len(fruits))fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits): print(f"{i}: {fruit}")# 0: apple# 1: banana# 2: cherry
# Начать с 1for i, fruit in enumerate(fruits, start=1): print(f"{i}. {fruit}")zip() — параллельная итерация
Заголовок раздела «zip() — параллельная итерация»names = ["Анна", "Борис", "Вера"]scores = [95, 87, 92]
for name, score in zip(names, scores): print(f"{name}: {score}")# Анна: 95# Борис: 87# Вера: 92
# zip создаёт словарьresult = dict(zip(names, scores))# {"Анна": 95, "Борис": 87, "Вера": 92}while — классический цикл
Заголовок раздела «while — классический цикл»# Простой whilecount = 0while count < 5: print(count) count += 1
# С пользовательским вводомwhile True: command = input("Введи команду (quit для выхода): ") if command == "quit": break print(f"Выполняю: {command}")
# Проверка условия в конце (имитация do-while)while True: age = int(input("Введи возраст: ")) if 0 <= age <= 150: break print("Некорректный возраст!")break, continue, else
Заголовок раздела «break, continue, else»# break — прерывает циклfor i in range(10): if i == 5: break print(i) # 0, 1, 2, 3, 4
# continue — пропускает итерациюfor i in range(10): if i % 2 == 0: continue print(i) # 1, 3, 5, 7, 9
# else у цикла — выполняется если цикл завершился без breaknumbers = [1, 3, 7, 9, 11]target = 5
for num in numbers: if num == target: print("Найдено!") breakelse: print("Не найдено") # выполнится если break не былоComprehensions — питонический стиль
Заголовок раздела «Comprehensions — питонический стиль»# List comprehensionnumbers = range(1, 11)squares = [x**2 for x in numbers]# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# С условиемeven_squares = [x**2 for x in numbers if x % 2 == 0]# [4, 16, 36, 64, 100]
# Dict comprehensionword_lengths = {word: len(word) for word in ["python", "java", "js"]}# {"python": 6, "java": 4, "js": 2}
# Set comprehensionunique_lengths = {len(word) for word in ["cat", "bat", "rat", "hello"]}# {3, 5}
# Generator expression (ленивый — не создаёт весь список)total = sum(x**2 for x in range(1000000)) # эффективно!Вложенные циклы и матрицы
Заголовок раздела «Вложенные циклы и матрицы»# Таблица умноженияfor i in range(1, 4): for j in range(1, 4): print(f"{i*j:3}", end="") print()# 1 2 3# 2 4 6# 3 6 9
# Обход матрицыmatrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix: for cell in row: print(cell, end=" ") print()
# Вложенный comprehensionflat = [cell for row in matrix for cell in row]# [1, 2, 3, 4, 5, 6, 7, 8, 9]
transposed = [[row[i] for row in matrix] for i in range(3)]# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]Практические примеры
Заголовок раздела «Практические примеры»# Фильтрация и трансформация данныхusers = [ {"name": "Анна", "age": 25, "active": True}, {"name": "Борис", "age": 17, "active": True}, {"name": "Вера", "age": 30, "active": False}, {"name": "Гена", "age": 22, "active": True},]
# Активные совершеннолетние пользователиeligible = [ u["name"] for u in users if u["active"] and u["age"] >= 18]# ["Анна", "Гена"]
# Группировка по полюfrom collections import defaultdict
by_active = defaultdict(list)for user in users: by_active[user["active"]].append(user["name"])# {True: ["Анна", "Борис", "Гена"], False: ["Вера"]}
# Подсчёт частотыtext = "the quick brown fox jumps over the lazy dog"frequency = {}for word in text.split(): frequency[word] = frequency.get(word, 0) + 1
# Топ 3 самых частых словаsorted_words = sorted(frequency.items(), key=lambda x: x[1], reverse=True)top3 = sorted_words[:3]Задание
Заголовок раздела «Задание»# Задание 1: FizzBuzz# Напечатай числа от 1 до 100:# - если делится на 3: "Fizz"# - если делится на 5: "Buzz"# - если делится на 15: "FizzBuzz"# - иначе: само число
# Задание 2: Обработка данныхproducts = [ {"name": "Ноутбук", "price": 75000, "category": "electronics"}, {"name": "Мышь", "price": 2000, "category": "electronics"}, {"name": "Стол", "price": 15000, "category": "furniture"}, {"name": "Кресло", "price": 25000, "category": "furniture"},]# Найди: общую стоимость, самый дорогой товар, среднюю цену по категориям
# Задание 3: Матрица# Создай матрицу 5x5, где [i][j] = i * j# Выведи красиво, найди сумму диагоналиВ следующем уроке — функции!