🏋️ Раздел тренировки
В этом разделе вы выполните практические задания, начиная с простых аннотаций и заканчивая функциями высшего порядка.
📂 Подготовка проекта
- Создайте папку для практики, например
python-fundamentals-practice/lesson-44/. - Создайте файл
tasks.pyи скопируйте в него условия заданий. - Решайте каждое задание в отдельной функции с docstring и аннотациями типов.
- Запускайте файл через
python tasks.py.
Задание 1. Длины слов
Условие: напишите функцию, которая принимает список строк и возвращает словарь, где ключи — строки, а значения — длина этих строк. Добавьте документацию и аннотации типов для всех параметров и возвращаемого значения.
Данные: words = ["apple", "banana", "cherry"]
Что должно получиться: {'apple': 5, 'banana': 6, 'cherry': 6}
Подсказка: используйте dict comprehension и функцию len().
Задание 2. Из чисел в слова
Условие: напишите функцию, которая заменяет числовые значения в словаре на их строковое представление из заранее подготовленного словаря сопоставлений. Добавьте документацию и аннотации типов.
Данные:
number_to_word = {1: "один", 2: "два", 3: "три"}
data = {"x": 1, "y": 2, "z": 3}
Что должно получиться: {'x': 'один', 'y': 'два', 'z': 'три'}
Подсказка: обходите ключи исходного словаря и подменяйте значение, если оно есть в словаре сопоставлений.
Задание 3. Генерация отчёта
Условие: напишите функцию, которая принимает имя пользователя и необязательный список его достижений. Если список пуст или не передан, возвращается сообщение "Имя: Нет достижений". Если список не пуст, возвращается строка с перечислением достижений через запятую. Добавьте документацию и аннотации типов.
Данные:
name = "Alice"
achievements = ["Won chess tournament", "Completed marathon", "Published a book"]
Что должно получиться: Alice: Won chess tournament, Completed marathon, Published a book
Подсказка: используйте Optional[list[str]] или list[str] | None для необязательного параметра.
Задание 4. Обработка элементов функцией (★ продвинутое)
Условие: напишите функцию, которая принимает другую функцию и список произвольных элементов. Примените переданную функцию ко всем элементам списка и верните новый список. Добавьте документацию и аннотации типов.
Данные: numbers = [1, 2, 3, 4, 5]
Что должно получиться: [2, 4, 6, 8, 10] при использовании функции lambda x: x * 2.
Подсказка: используйте Callable[[Any], Any] из модуля typing.