🏠 Домашнее задание

⚡ Кратко: что важно

Урок повторяет модули time и collections (OrderedDict, Counter, deque, defaultdict), frozenset, functools.lru_cache, основы работы со словарями, передачу функций, lambda и парадигмы программирования.

Что запомнить: функцию передают без скобок; @lru_cache(maxsize=...) кэширует результаты; frozenset неизменяем и хешируем; OrderedDict управляет порядком через move_to_end() и popitem().

Топ-3 ошибки: передавать func() вместо ссылки func; забывать list() вокруг map/filter; пытаться изменить frozenset или использовать обычный set как ключ словаря.

Текст заданий из источника

1. Повторения букв

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

text = "Programming is fun!"

2. Группировка студентов по классам

Создайте структуру для группировки студентов по классам и добавьте студентов в соответствующие группы.

students = [("class1", "Alice"), ("class2", "Bob"), ("class1", "Charlie"), ("class3", "Daisy")]

3. Выбор заказов

Отберите заказы дороже 500, создайте список названий продуктов в алфавитном порядке и верните итоговый список.

orders = [
    {"product": "Laptop", "price": 1200},
    {"product": "Mouse", "price": 50},
    {"product": "Keyboard", "price": 100},
    {"product": "Monitor", "price": 300},
    {"product": "Chair", "price": 800},
    {"product": "Desk", "price": 400}
]

4. Статистика продаж

Вычислите общую выручку для каждого товара и верните словарь, отсортированный по убыванию выручки.

sales = [("Laptop", 5, 1200), ("Mouse", 50, 20), ("Keyboard", 30, 50), ("Monitor", 10, 300), ("Chair", 20, 800)]

Решения

Подробные решения находятся на странице Решения.

Проверка в VS Code

  1. Создайте файл main.py и перенесите решение.
  2. Запустите python main.py в терминале.
  3. Сравните вывод с примером из задания.
  4. Проверьте крайние случаи: пустые коллекции, повторяющиеся значения, отсутствие ключа.