📝 Практические задания

⚡ Кратко: задания

Set comprehension создаёт множество из выражения, цикла и необязательного условия.

frozenset - неизменяемый аналог set, поэтому его можно использовать как ключ словаря или элемент другого множества.

Словарь хранит пары ключ-значение; ключ должен быть уникальным и хешируемым.

dict() создаёт словарь из именованных аргументов или последовательности пар.

Доступ через dictionary[key] быстрый, но отсутствующий ключ вызывает KeyError.

Оператор in проверяет наличие ключа, а не значения.

update() добавляет новые пары и перезаписывает существующие ключи.

del и pop() удаляют по ключу; pop() ещё возвращает удалённое значение.

Топ-3 ошибки: создавать пустое множество через {}, хотя это пустой dict; использовать list или set как ключ словаря; читать отсутствующий ключ через [] без проверки.

Задание 1. Уникальные длины

Создайте множество длин слов из списка words.

words = ["apple", "banana", "cherry", "apple"]

Задание 2. frozenset и union

Создайте frozenset из [1, 2, 3], затем получите новое множество с 4 и 5 через union().

immutable_set = frozenset([1, 2, 3])

Задание 3. Типы ключей

Проверьте, какие типы можно использовать как ключи: int, bool, set, float, dict, tuple, list, frozenset.

Задание 4. Преобразование пар

Преобразуйте список пар в словарь и выведите name.

pairs = [("name", "Charlie"), ("age", 35), ("city", "Paris"), ("name", "Bob")]

Задание 5. Инверсия

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

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

Задание 6. Неуникальные числа

Найдите числа, которые встречаются более одного раза, и выведите их в порядке убывания.

numbers = [4, 7, 3, 7, 8, 3, 4, 2, 7, 3, 8, 4]

Задание 7. Подмножество словаря

Проверьте, что все пары первого словаря есть во втором.

dict1 = {"a": 1, "b": 2}; dict2 = {"a": 1, "b": 2, "c": 3}

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

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

Вопрос 1

Что хранит dict?

Вопрос 2

Что гарантирует set?

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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