/
EkaterinaZan
/
Python_Homework
Обзор
Документация
Войти
/
EkaterinaZan
/
Python_Homework
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
15.10.25
81 строка
3 KB
EkaterinaZan
create 15.10.25
17 окт 2025, 19:03
17 окт 2025, 19:03
0101ee5
Код
Авторство
О чём код?
from decimal import Decimal from datetime import datetime goods = { 'Пельмени Универсальные': [ # Первая партия продукта 'Пельмени Универсальные': {'amount': Decimal('0.5'), 'expiration_date': datetime.strptime('2023-7-15',"%Y-%m-%d").date()}, # Вторая партия продукта 'Пельмени Универсальные': {'amount': Decimal('2'), 'expiration_date': datetime.strptime('2023-8-1',"%Y-%m-%d").date()}, ], 'Вода': [ {'amount': Decimal('1.5'), 'expiration_date': None} ], 'Яйца': [ {'amount': Decimal('1'), 'expiration_date': datetime.strptime('2023-7-10',"%Y-%m-%d").date()} ], 'Яйца гусиные': [ {'amount': Decimal('4'), 'expiration_date': datetime.strptime('2023-7-25',"%Y-%m-%d").date()} ], } # добавляет продукт в словарь goods def add(items, title, amount, expiration_date=None): # Преобразуем expiration_date в объект date, если он задан if expiration_date: date_object = datetime.strptime(expiration_date, "%Y-%m-%d").date() else: date_object = None # Новая запись о товаре new_item = { 'amount': amount, 'expiration_date': date_object } # Добавляем в словарь if title in items: items[title].append(new_item) else: items[title] = [new_item] return items # добавляет продукт в словарь goods, преобразуя текстовое описание продукта в структурированные данные def add_by_note(items, note): a = note.split(' ') # Проверяем: является ли последнее слово датой? expiration_date = None try: datetime.strptime(a[-1], "%Y-%m-%d") expiration_date = a[-1] amount = Decimal(a[-2]) # Кол-во продукта title = " ".join(a[:-2]) # Соединяем название except ValueError: amount = Decimal(a[-1]) # Кол-во продукта title = " ".join(a[:-1]) # Соединяем название return add(items,title,amount,expiration_date) # ищет в словаре goods заданное слово или строку и возвращает список продуктов, в названии которых есть это слово def find(items, needle): results =[] for item in items: lower_needle = needle.lower() if lower_needle in item.lower(): results.append(item) return results # возвращает количество запрошенного продукта def amount(items, needle): prod = find(goods, needle) # список названий amount = Decimal('0') for product in prod: for batch in items[product]: # items[product] — список партий amount += batch['amount'] # batch — словарь с 'amount' и 'expiration_date' return amount #print(find(goods, 'Яй')) #print(amount(goods, 'а')) #print(add(goods, 'Вода', Decimal('1.5'),)) #print(add_by_note(goods, 'Греческий йогурт 4 3000-07-15')) #print(add_by_note(goods, 'Греческий йогурт 1'))