📝 Задания

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

Урок повторяет модули 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. Инверсия словаря

Создайте новый словарь, где значения исходного становятся ключами, а ключи — значениями.

original_dict = {"a": 1, "b": 2, "c": 3}

Ожидаемый результат: {1: 'a', 2: 'b', 3: 'c'}

Задание 2. Из чисел в слова

Замените числовые значения словаря на строковое представление по словарю сопоставлений.

number_to_word = {1: "один", 2: "два", 3: "три"}
data = {"x": 1, "y": 2, "z": 3}

Ожидаемый результат: {'x': 'один', 'y': 'два', 'z': 'три'}

Задание 3. Список квадратов чисел

Сформируйте список квадратов без циклов и list comprehension.

numbers = [1, 2, 3, 4, 5]

Ожидаемый результат: [1, 4, 9, 16, 25]

Задание 4. Сортировка по возрасту

Отсортируйте список кортежей (имя, возраст) по возрасту по возрастанию.

people = [("Mike", 19), ("Nancy", 35), ("Charlie", 23), ("Oscar", 33), ("Eve", 29), ("Frank", 33), ("Bob", 20), ("Grace", 27), ("Isabella", 19), ("Jack", 24), ("Alice", 25), ("Kevin", 28), ("Laura", 31), ("Diana", 30), ("Henry", 19)]

Ожидаемый результат: возраст по возрастанию

Задание 5. Сортировка по возрасту и имени

Отсортируйте тот же список по убыванию возраста; при равном возрасте — по имени по алфавиту.

people = [("Mike", 19), ("Nancy", 35), ("Charlie", 23), ("Oscar", 33), ("Eve", 29), ("Frank", 33), ("Bob", 20), ("Grace", 27), ("Isabella", 19), ("Jack", 24), ("Alice", 25), ("Kevin", 28), ("Laura", 31), ("Diana", 30), ("Henry", 19)]

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

Задание 6. Фильтрация и преобразование сотрудников

Отфильтруйте сотрудников старше 30 лет и увеличьте их зарплату на 20%.

employees = [
    {"name": "Alice", "age": 25, "salary": 50000},
    {"name": "Bob", "age": 35, "salary": 60000},
    {"name": "Charlie", "age": 40, "salary": 70000},
    {"name": "Diana", "age": 28, "salary": 55000},
    {"name": "Eve", "age": 45, "salary": 80000}
]

Ожидаемый результат: отфильтрованные сотрудники с увеличенной зарплатой

Задание 7. Повторения букв

Посчитайте количество каждой буквы в тексте, игнорируя регистр.

text = "Programming is fun!"

Ожидаемый результат: словарь с частотами букв

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

Сгруппируйте список (класс, имя) в словарь классов.

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

Ожидаемый результат: {'class1': ['Alice', 'Charlie'], 'class2': ['Bob'], 'class3': ['Daisy']}

Задание 9. Выбор заказов

Отберите заказы дороже 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}
]

Ожидаемый результат: ['Chair', 'Laptop']

Задание 10. Статистика продаж

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

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

Ожидаемый результат: {товар: выручка} по убыванию

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Как лучше использовать summary-урок?

Вопрос 2

Что показывает хороший результат после повторения блока?

Вопрос 3

Какой вопрос стоит задать себе после каждого ответа?

Вопрос 4

Какой стиль имён переменных обычно рекомендует PEP 8?

Вопрос 5

Зачем использовать f-strings в современном Python?

Вопрос 6

Когда полезен ранний возврат из функции?

Вопрос 7

Что делает аннотация типа в Python?

Вопрос 8

Как лучше обрабатывать ожидаемую ошибку преобразования?