Чтобы реализовать программу для хранения списка продуктов, их количества и срока годности, мы можем воспользоваться структурой данных, описанной вами, и создать несколько функций для добавления продуктов и отображения содержимого "холодильника".
Вот пример кода на Python, который реализует указанные функции:
```python
import datetime
from decimal import Decimal
# Словарь для хранения продуктов
goods = {}
def add_product(name, amount, expiration_date=None):
"""Добавляет продукт в холодильник."""
if name not in goods:
goods[name] = []
# Создание словаря с информацией о партии продукта
product_batch = {
'amount': Decimal(amount),
'expiration_date': expiration_date
}
# Добавление партии в список продуктов
goods[name].append(product_batch)
def display_contents():
"""Выводит информацию о содержимом холодильника."""
if not goods:
print("Холодильник пуст.")
return
for product, batches in goods.items():
print(f"Продукт: {product}")
for batch in batches:
expiration = batch['expiration_date'].strftime('%Y-%m-%d') if batch['expiration_date'] else 'Нет срока годности'
print(f" - Количество: {batch['amount']} кг, Срок годности: {expiration}")
# Примеры использования функций
add_product('Пельмени Универсальные', 0.5, datetime.date(2023, 7, 15))
add_product('Пельмени Универсальные', 2, datetime.date(2023, 8, 1))
add_product('Вода', 1.5)
# Отображаем содержимое холодильника
display_contents()
```
### Объяснение кода:
1. **Импорт библиотек**:
- `datetime` для работы с датами.
- `Decimal` из модуля `decimal` для точного представления количеств продуктов.
2. **Структура данных**:
- `goods` — словарь, где ключом является название продукта, а значением — список партий.
3. **Функция `add_product`**:
- Принимает название продукта, его количество и (опционально) срок годности.
- Если продукт еще не был добавлен, создается пустой список для его партий.
- В список добавляется новый словарь, содержащий количество и срок годности.
4. **Функция `display_contents`**:
- Выводит информацию о всех продуктах в холодильнике.
- Если холодильник пуст, выводится соответствующее сообщение.
- Для каждого продукта отображает его партии, включая количество и срок годности.
### Как использовать:
- Вы можете добавить новые продукты, вызывая функцию `add_product`, и затем вывести содержимое холодильника, вызвав `display_contents`.
Вы можете расширять функциональность, добавляя, например, возможность удалять продукты, обновлять количество и срок годности, или добавлять проверку на истечение срока годности.