Top.Mail.Ru
Ответы

Python помогите пожалуйста решить задачу

Тестирование программы — значительная и обязательная часть работы, не пренебрегайте ей.
Подсказки
Формат даты можно определить константой DATE_FORMAT = '%Y-%m-%d'.
Функция add().
Проверить, есть ли продукт (title) в словаре items.
Преобразовать строку в дату с помощью модуля datetime.
Применить append для добавления словаря с ключами 'amount' и 'expiration_date' в список для конкретного title.
Функция add_by_note().
Разделить строку на части с помощью str.split.
Определить, является ли последняя часть строки датой.
Нужную часть строки конвертировать в число типа Decimal
Оставшуюся часть строки объединить, чтобы получить название продукта: если название состояло из нескольких слов — функция str.split разобъёт его на части.
Вызвать функцию add(), передав в неё получившиеся данные — название, количество и срок хранения.
Функция find().
Перебрать ключи словаря.
Применить функцию lower, чтобы провести поиск без учёта регистра.
Добавить найденные заголовки в результат поиска с помощью функции append.
Функция amount().
Применить функцию find() для получения списка подходящих товаров.
Суммировать значения amount для вычисления количества каждого найденного товара.
Функция expire().
Получить текущую дату с помощью datetime.date.today ().
Добавить определённое количество дней к текущей дате.
Проверить, истекает ли срок годности товара: сравнить его с текущей датой и с датой истечения срока годности.




from decimal import Decimal
import datetime
from datetime import date, timedelta

DATE_FORMAT = '%Y-%m-%d'
goods = {
'Яйца': [{'amount': Decimal('1'), 'expiration_date': datetime.date (2023, 6, 24)}],
'Яйца гусиные': [{'amount': Decimal('4'), 'expiration_date': datetime.date (2023, 7, 15)}],
'Морковь': [{'amount': Decimal('2'), 'expiration_date': datetime.date (2023, 8, 6)}]
}

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

add(goods, 'Молоко', Decimal('2'), '2023-12-15')
add(goods, 'Вода', Decimal('2.5'))



def add_by_note(items, note):



def find(items, needle):
...


def amount(items, needle):
...


def expire(items, in_advance_days=0):
...

По дате
По Рейтингу
Аватар пользователя
Мастер
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
 import datetime 
from decimal import Decimal 
 
items = { 
    'apple': [], 
    'banana': [], 
    'orange': [] 
} 
 
DATE_FORMAT = '%Y-%m-%d' 
 
def add(title, amount, expiration_date): 
    if title in items: 
        items[title].append({'amount': Decimal(amount), 'expiration_date': expiration_date}) 
 
def add_by_note(note): 
    parts = note.split() 
    if parts[-1].isdigit(): 
        amount = parts[-1] 
        product_name = ' '.join(parts[:-1]) 
        expiration_date = datetime.datetime.strptime(parts[-1], DATE_FORMAT).date() 
        add(product_name, amount, expiration_date) 
 
def find(query): 
    result = [] 
    for title in items: 
        if query.lower() in title.lower(): 
            result.append(title) 
    return result 
 
def amount(): 
    found_items = find('apple') 
    total_amount = 0 
    for title in found_items: 
        for item in items[title]: 
            total_amount += item['amount'] 
    return total_amount 
 
def expire(days): 
    today = datetime.date.today() 
    expiration_date = today + datetime.timedelta(days) 
    for title in items: 
        for item in items[title]: 
            if item['expiration_date'] <= today or item['expiration_date'] >= expiration_date: 
                print(f"The item {title} has expired or will expire soon.") 
 
# Чисто примерчик 
add('apple', '10', datetime.date(2022, 6, 1)) 
add('banana', '5', datetime.date(2022, 5, 15)) 
add('orange', '8', datetime.date(2022, 6, 20)) 
 
add_by_note('Grapes 4 2022-07-10') 
 
print(find('apple')) 
print(amount()) 
 
expire(30)