Глава 13 · Автоматизация с помощью функций

Мини-проекты — конвертер единиц и утилиты коллекций

Два небольших проекта, полностью состоящих из чистых функций — образцовых кандидатов для независимого тестирования.

Используем
defreturntype hintsassert
Уровень
★★ средний
Результат
набор чистых функций

Конвертер единиц измерения

Маленький проект из полностью чистых функций — идеальных кандидатов для тестирования из §13.24:

konverter.py
def celsius_to_fahrenheit(celsius: float) -> float:
    return celsius * 9 / 5 + 32

def fahrenheit_to_celsius(fahrenheit: float) -> float:
    return (fahrenheit - 32) * 5 / 9

def km_to_miles(km: float) -> float:
    return km * 0.621371

assert celsius_to_fahrenheit(0) == 32
assert celsius_to_fahrenheit(100) == 212
assert round(km_to_miles(10), 2) == 6.21
Ни одного input(), ни одного print() внутри самих функций
Все три функции — чистые: результат целиком зависит от аргумента, побочных эффектов нет. Именно поэтому их можно проверить через assert, не запуская вообще ничего похожего на полноценную программу.

Утилиты для работы с коллекциями

Набор маленьких, сфокусированных функций поверх списков и словарей из главы 11:

kollekciya_utility.py
def average(scores: list[float]) -> float:
    return sum(scores) / len(scores)

def count_above(scores: list[float], threshold: float) -> int:
    return len([s for s in scores if s > threshold])

def unique_words(text: str) -> set[str]:
    return set(text.lower().split())

def find_top_score(students: list[dict]) -> dict:
    return max(students, key=lambda s: s["score"])
find_top_score использует функцию как аргумент
key=lambda s: s["score"] — то же самое сочетание max()/sorted() + lambda из §13.20 и §13.26, только теперь на списке словарей (глава 11, §11.14).
★★ Самостоятельная задача
Ещё одна утилита

Напишите find_students_below(students, threshold) — список имён учеников с баллом ниже threshold. Проверьте её на 2-3 примерах через assert.

Практика: конвертер единиц измерения
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →
Практика: утилиты для списков и словарей
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →