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

⚡ Кратко: домашнее задание

Практикум 9 закрепляет set, dict, frozenset и вложенные структуры.

Для чисел, кратных 3 или 5, подходит set comprehension с условием.

Общие ключи двух словарей удобно искать через пересечение set(dict1) & set(dict2).

Список строк превращается в словарь длин через dict comprehension.

Подмножество словаря означает совпадение пар ключ-значение, а не только ключей.

Пустые значения можно удалить comprehension с проверкой truthiness.

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

В задачах с вводом отделяйте чистую логику от input(), чтобы проще тестировать.

Топ-3 ошибки: проверять подмножество словаря только по ключам; терять рецепты с одинаковым набором ингредиентов; использовать set как ключ вместо frozenset.

Подготовка окружения

  1. Создайте папку lesson_37.
  2. Каждую задачу оформите отдельным файлом task_1.py, task_2.py и так далее.
  3. Запускайте файлы из терминала VS Code командой python task_1.py.
  4. После совпадения с примером измените входные данные и проверьте, что решение не привязано к одному случаю.

Домашнее задание 1. Практическая работа 9

В источнике урок 37 является практикумом без отдельного LMS-ДЗ. Для закрепления оформите решения задач 8-10 в отдельные файлы.

Данные: task_8_recipes.py, task_9_subjects.py, task_10_translator.py

recipes = {
    ("flour", "egg", "milk"): "Pancakes",
    ("milk", "flour", "egg"): "Waffles",
}

grouped = {}
for ingredients, recipe in recipes.items():
    grouped.setdefault(frozenset(ingredients), []).append(recipe)

available = frozenset(["milk", "egg", "flour"])
available_recipes = []

for ingredients, recipe_names in grouped.items():
    if ingredients <= available:
        available_recipes.extend(recipe_names)

print(available_recipes if available_recipes else "Нет рецептов")