📝 Задания

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

time.time() помогает измерять длительность, sleep() делает задержку.

collections содержит специализированные структуры данных.

OrderedDict сохраняет порядок и умеет move_to_end().

popitem(last=False) удаляет первый элемент OrderedDict, что удобно для очереди.

Кэш хранит результаты повторных операций, LRU удаляет давно не используемые записи.

@lru_cache кэширует вызовы функции по аргументам.

defaultdict создаёт значение по умолчанию при обращении к отсутствующему ключу.

Counter считает элементы и умеет most_common(), elements(), update(), subtract().

Топ-3 ошибки: использовать sleep() в измерении быстрых операций; забывать, что defaultdict добавляет ключ при чтении; ожидать от Counter вычитания отрицательные значения при операторе -.

Задание 1. Частотный анализ слов

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

text = "This is a test. This test is only a test."

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

Задание 2. Список студентов по факультетам

Сгруппируйте студентов по факультетам.

students = [("Иван", "Физика"), ("Мария", "Математика"), ("Пётр", "Физика"), ("Анна", "Математика"), ("Олег", "Информатика"), ("Наталья", "Физика")]

Ожидаемый результат: Физика: ['Иван', 'Пётр', 'Наталья']

Задание 3. Проверка defaultdict

Объясните, почему print(dd['z']) возвращает пустой список и меняет словарь.

from collections import defaultdict

dd = defaultdict(list)
print(dd['z'])

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

Задание 4. Самые частые элементы

Получите два самых частых символа строки banana.

text = "banana"

Ожидаемый результат: [('a', 3), ('n', 2)]

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

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

Вопрос 1

Что хранит dict?

Вопрос 2

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

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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