Пример 1. Чтение и агрегация JSON
Группировка данных по ключу и вычисление среднего:
import json
from collections import defaultdict
from pathlib import Path
grades = json.loads(Path("grades.json").read_text(encoding="utf-8"))
by_student: defaultdict[str, list[int]] = defaultdict(list)
for entry in grades:
by_student[entry["name"]].append(entry["grade"])
averages = {
name: round(sum(values) / len(values), 2)
for name, values in by_student.items()
}
print(averages)
Пример 2. Нормализация телефонного номера
Удаляем всё, кроме цифр, и приводим к формату +49...:
import re
raw = "+49 157 1234-5678"
clean = re.sub(r"\D", "", raw) # '4915712345678'
if clean.startswith("0049"):
clean = clean[4:]
elif clean.startswith("49"):
clean = clean[2:]
print(f"+49{clean}") # +4915712345678
Пример 3. Определение квартала по дате
from datetime import datetime
def get_quarter(date_str: str) -> str | None:
month = datetime.strptime(date_str, "%d-%m-%Y").month
if 1 <= month <= 3:
return "Q1"
if 4 <= month <= 5:
return "Q2"
if 9 <= month <= 12:
return "Q3"
return None # летние месяцы
print(get_quarter("06-09-2025")) # Q3
print(get_quarter("15-04-2025")) # Q2
Пример 4. Генератор для чтения файла
from pathlib import Path
def emails_from_file(path: Path):
with path.open(encoding="utf-8") as file:
for line in file:
if "@" in line:
yield line.strip()
for email in emails_from_file(Path("contacts.txt")):
print(email)
Как запустить в VS Code
- Создайте папку
python-fundamentals-practice/lesson-61/. - Создайте файлы данных (
grades.json,german_numbers.txt) и скрипты. - Откройте терминал в VS Code (Ctrl + `).
- Активируйте виртуальное окружение:
venv\Scripts\activate(Windows) илиsource venv/bin/activate(Mac/Linux). - Запустите:
python task_01_grades.py