Вам предстоит написать программу, которая будет:
хранить перечень продуктов, их количество и срок годности;
позволит добавлять новые продукты в перечень продуктов;
позволит получать информацию о содержимом холодильника.
goods = {
'Пельмени Универсальные': [
# Первая партия продукта 'Пельмени Универсальные':
{'amount': Decimal('0.5'), 'expiration_date': datetime.date(2023, 7, 15)},
# Вторая партия продукта 'Пельмени Универсальные':
{'amount': Decimal('2'), 'expiration_date': datetime.date(2023, 8, 1)},
],
'Вода': [
{'amount': Decimal('1.5'), 'expiration_date': None}
],
}
Опишите функции add(), add_by_note(), find(), amount() и expire().
С чего начать
Не пытайтесь сделать всю работу одновременно: выполняйте её по шагам.
Объявите словарь goods, добавьте в него пару продуктов — их можно скопировать из приведённых примеров.
Займитесь функцией add() — научите её добавлять продукты в словарь. Протестируйте работу этой функции и переходите к следующей. На каждом этапе перечитывайте подсказки и описания, относящиеся к функции, над которой вы работаете.
Каждую готовую функцию вызовите несколько раз с разными аргументами:
с необязательными аргументами и без них,
со вчерашней и завтрашней датой (через сто лет — тоже попробуйте),
передайте в add() и add_by_note() новые продукты и те, что уже есть в словаре goods.
Тестирование программы — значительная и обязательная часть работы, не пренебрегайте ей.
Подсказки
Формат даты можно определить константой DATE_FORMAT = '%Y-%m-%d'.
Функция add().
Проверить, есть ли название продукта (title) в словаре items.
Преобразовать строку с датой в тип date с помощью модуля datetime.
Применить list.append() для добавления словаря с ключами 'amount' и 'expiration_date' в список партий продукта с конкретным title.
Функция add_by_note().
Разделить строку на части по пробелам с помощью str.split.
Определить, является ли последняя часть строки датой.
Ту часть строки, где указано количество продукта, конвертировать в число типа Decimal
Оставшуюся часть строки объединить, чтобы получить название продукта: если название состояло из нескольких слов — функция str.split разобъёт его на части.
Вызвать функцию add(), передав в неё получившиеся данные — название, количество и срок хранения.
Функция find().
Перебрать ключи словаря.
При переборе применить к ключам функцию lower, чтобы провести поиск без учёта регистра.
Найденные названия продуктов добавить в список с результатами поиска при помощи функции append.
Функция amount().
Применить функцию find() для получения списка подходящих товаров.
Суммировать значения amount найденных продуктов для вычисления количества каждого найденного товара.
Функция expire().
Получить текущую дату с помощью datetime.date.today().
Добавить количество дней из запроса к текущей дате.
Перебрать все партии продукта и для каждой проверить, истекает ли срок годности: сравнить его с текущей датой и с датой истечения срока годности.