Можете объяснить, что именно вызывает у вас затруднения?

Вам необходимо разработать программу, которая будет выполнять следующие функции: <br/> 1. Хранить список продуктов вместе с их количеством и сроком годности; <br/> 2. Позволять добавлять новые продукты в этот список; <br/> 3. Предоставлять информацию о содержимом холодильника. <br/> <br/> Для реализации используйте Python. <br/> <br/> Пример структуры данных: <br/> goods = { <br/> 'Пельмени Универсальные': [ <br/> # Первая партия продукта 'Пельмени Универсальные': <br/> {'amount': Decimal('0.5'), 'expiration_date': datetime.date(2023, 7, 15)}, <br/> # Вторая партия продукта 'Пельмени Универсальные': <br/> {'amount': Decimal('2'), 'expiration_date': datetime.date(2023, 8, 1)}, <br/> ], <br/> 'Вода': [ <br/> {'amount': Decimal('1.5'), 'expiration_date': None} <br/> ], <br/> } <br/> Как видно из примера, продукт «Вода» был закуплен один раз в объёме 1.5 кг. Однако один и тот же продукт может быть добавлен в холодильник несколько раз. Например, если пользователь купил килограмм «Универсальных» пельменей неделю назад, съел половину, а затем приобрёл ещё два килограмма, то у него в холодильнике окажется две партии «Пельменей Универсальных» с разными сроками хранения. <br/> Каждая партия продукта представлена в виде элемента словаря, где ключ — это название продукта, а значение — список словарей. Каждый вложенный словарь содержит два поля: <br/> - amount — количество продукта; <br/> - expiration_date — срок годности. <br/> Количество продукта может быть представлено как целое число для исчисляемых продуктов (в штуках):
  • 21 октября 2024 г. 12:52
Ответы на вопрос 1
Чтобы реализовать программу для хранения списка продуктов, их количества и срока годности, мы можем воспользоваться структурой данных, описанной вами, и создать несколько функций для добавления продуктов и отображения содержимого "холодильника". 

Вот пример кода на 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`.

Вы можете расширять функциональность, добавляя, например, возможность удалять продукты, обновлять количество и срок годности, или добавлять проверку на истечение срока годности.
Похожие вопросы