Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Очень требуется помощь, никак не могу разобраться

ЕЛЕНА ШАПОВАЛ Ученик (167), на голосовании 3 месяца назад
from datetime import datetime, date, timedelta
from decimal import Decimal

DATE_FORMAT = '%Y-%m-%d'

def add(items, title, amount, expiration_date=None):
if expiration_date is not None:
expiration_date = datetime.strptime(expiration_date, DATE_FORMAT).date()
if title in items:
items[title].append({'amount': amount, 'expiration_date': expiration_date})
else:
items[title] = [{'amount': amount, 'expiration_date': expiration_date}]

def find(items, needle):
needle_lower = needle.lower()
find_items = []
for key, value in items.items():
key_lower = key.lower()
if needle_lower in key_lower:
find_items.append(key)
return find_items

def amount(items, needle):
needle_lower = needle.lower()
amount_total = Decimal("0")
for key, value in items.items():
key_lower = key.lower()
if needle_lower in key_lower:
for val in value:
amount_total += val['amount']
return amount_total

def add_by_note(items, note):
str_split_note = note.split()
title = " ".join(str_split_note[:-2])
amount = Decimal(str_split_note[-2 ])
expiration_date_str = str_split_note[-1]
expiration_date = datetime.strptime(expiration_date_str, DATE_FORMAT).date()
if len(str_split_note) > 2:
if title in items:
items[title].append({'amount': amount, 'expiration_date': expiration_date})
else:
items[title] = [{'amount': amount, 'expiration_date': expiration_date}]
else:
items[title] = [{'amount': amount, 'expiration_date': None}]


def expire(items, in_advance_days=0):
today = date.today ()
expired_products = []
if in_advance_days is None:
in_advance_days = 0
for title, product_list in items.items():
for product in product_list:
expiration_date = product.get("expiration_date")
if expiration_date is not None:
if expiration_date <= today + timedelta(days=in_advance_days):
expired_products.append((title, product["amount"]))
return expired_products

goods = {
'Пельмени Универсальные': [{'amount': Decimal('0.5'), 'expiration_date': date(2024, 3, 15)}],
'Вода': [{'amount': Decimal('1.5'), 'expiration_date': None}]
}

add(goods, "Хлеб", Decimal('1'), '2023-10-28')
add(goods, "Богатырь", Decimal('1.7'), '2023-10-2')
add(goods, "Богатырь", Decimal('5'))
add_by_note(goods, 'Яйца перепелиные 5 2024-03-20')
add_by_note(goods, 'Яйца гусиные большие 7 2024-03-20')
add_by_note(goods, 'Хлеб 5 2024-03-20')
add_by_note(goods, 'Колбаса 0.5 2024-03-17')
Голосование за лучший ответ
Dians Мастер (2017) 4 месяца назад
Обнаруженная ошибка в коде: после объявления функции add необходимо добавить отступы в блоке кода функции, чтобы он был правильно отформатирован. Кроме того, необходимо добавить отступы для блока кода в функции add_by_note. Вот исправленный код:
from datetime import datetime, date, timedelta
from decimal import Decimal

DATE_FORMAT = '%Y-%m-%d'

def add(items, title, amount, expiration_date=None):
if expiration_date is not None:
expiration_date = datetime.strptime(expiration_date, DATE_FORMAT).date()
if title in items:
items[title].append({'amount': amount, 'expiration_date': expiration_date})
else:
items[title] = [{'amount': amount, 'expiration_date': expiration_date}]

def find(items, needle):
needle_lower = needle.lower()
find_items = []
for key, value in items.items():
key_lower = key.lower()
if needle_lower in key_lower:
find_items.append(key)
return find_items

def amount(items, needle):
needle_lower = needle.lower()
amount_total = Decimal("0")
for key, value in items.items():
key_lower = key.lower()
if needle_lower in key_lower:
for val in value:
amount_total += val['amount']
return amount_total

def add_by_note(items, note):
str_split_note = note.split()
title = " ".join(str_split_note[:-2])
amount = Decimal(str_split_note[-2])
expiration_date_str = str_split_note[-1]
expiration_date = datetime.strptime(expiration_date_str, DATE_FORMAT).date()
if len(str_split_note) > 2:
if title in items:
items[title].append({'amount': amount, 'expiration_date': expiration_date})
else:
items[title] = [{'amount': amount, 'expiration_date': expiration_date}]
else:
items[title] = [{'amount': amount, 'expiration_date': None}]

def expire(items, in_advance_days=0):
today = date.today ()
expired_products = []
if in_advance_days is None:
in_advance_days = 0
for title, product_list in items.items():
for product in product_list:
expiration_date = product.get("expiration_date")
if expiration_date is not None:
if expiration_date <= today + timedelta(days=in_advance_days):
expired_products.append((title, product["amount"]))
return expired_products

goods = {
'Пельмени Универсальные': [{'amount': Decimal('0.5'), 'expiration_date': date(2024, 3, 15)}],
'Вода': [{'amount': Decimal('1.5'), 'expiration_date': None}]
}

add(goods, "Хлеб", Decimal('1'), '2023-10-28')
add(goods, "Богатырь", Decimal('1.7'), '2023-10-2')
add(goods, "Богатырь", Decimal('5'))
add_by_note(goods, 'Яйца перепелиные 5 2024-03-20')
add_by_note(goods, 'Яйца гусиные большие 7 2024-03-20')
add_by_note(goods, 'Хлеб 5 2024-03-20')
add_by_note(goods, 'Колбаса 0.5 2024-03-17')

делала через чат gpt https://habab.ru/pomoshchnik-v-napisanie-koda-na-python/
Александр Захаров Ученик (149) 1 месяц назад
Здравствуйте! Скажите пожалуйста, удалось решить вопрос по этой задаче?
Похожие вопросы