Вывести общую стоимость просроченных медикаментов
В текстовом файле заданны названия лекарств, срок их годности, кол-во стандартов и стоимость одного стандарта. Вывеси на экран данные по лекарствам с истекшим сроком годности на сегодняшний день и подсчитать общую сумму таких медикаментов. Я не знаю как правильно записать. Моя идея не работала.
from functools import reduce
import datetime
nowdate = datetime.date(2021, 2, 12)
lekarstva = [
{'nazvanie': 'Аспирин', 'srokgodnosti': datetime.date(1999, 4, 15), 'kol-vostandartov': 127, 'stoimostodnogostandarta': 1.35},
{'nazvanie': 'Цитромон', 'srokgodnosti': datetime.date(2001, 2, 1), 'kol-vostandartov': 76, 'stoimostodnogostandarta': 0.8},
{'nazvanie': 'Алфлутоп', 'srokgodnosti': datetime.date(1993, 3, 25), 'kol-vostandartov': 28, 'stoimostodnogostandarta': 1.42},
{'nazvanie': 'Спазмалгон', 'srokgodnosti': datetime.date(2003, 12, 3), 'kol-vostandartov': 312, 'stoimostodnogostandarta': 1.91},
{'nazvanie': 'Шиза', 'srokgodnosti': datetime.date(2023, 7, 17), 'kol-vostandartov': 5, 'stoimostodnogostandarta': 4.67}
]
for i in lekarstva:
for key, value in i.items():
if key == 'srokgodnosti' and value < nowdate:
print(i)
x = list(i)
break
for ii in x:
for kkey, valuess in ii.items():
if kkey == 'kol-vostandartov' and valuess == 'stoimostodnogostandarta':
reduce(lambda kkey, values: kkey * valuess)
print(ii)
Ответы (1 шт):
Автор решения: Jack_oS
→ Ссылка
import datetime
nowdate = datetime.date(2021, 2, 12)
lekarstva = [
{'nazvanie': 'Аспирин', 'srokgodnosti': datetime.date(1999, 4, 15), 'kol-vostandartov': 127, 'stoimostodnogostandarta': 1.35},
{'nazvanie': 'Цитромон', 'srokgodnosti': datetime.date(2001, 2, 1), 'kol-vostandartov': 76, 'stoimostodnogostandarta': 0.8},
{'nazvanie': 'Алфлутоп', 'srokgodnosti': datetime.date(1993, 3, 25), 'kol-vostandartov': 28, 'stoimostodnogostandarta': 1.42},
{'nazvanie': 'Спазмалгон', 'srokgodnosti': datetime.date(2003, 12, 3), 'kol-vostandartov': 312, 'stoimostodnogostandarta': 1.91},
{'nazvanie': 'Шиза', 'srokgodnosti': datetime.date(2023, 7, 17), 'kol-vostandartov': 5, 'stoimostodnogostandarta': 4.67}
]
Список с истекшим сроком годности:
foo_lekarstva = [i for i in lekarstva if i['srokgodnosti'] < nowdate]
>>> foo_lekarstva
[{'nazvanie': 'Аспирин', 'srokgodnosti': datetime.date(1999, 4, 15), 'kol-vostandartov': 127, 'stoimostodnogostandarta': 1.35}, {'nazvanie': 'Цитромон', 'srokgodnosti': datetime.date(2001, 2, 1), 'kol-vostandartov': 76, 'stoimostodnogostandarta': 0.8}, {'nazvanie': 'Алфлутоп', 'srokgodnosti': datetime.date(1993, 3, 25), 'kol-vostandartov': 28, 'stoimostodnogostandarta': 1.42}, {'nazvanie': 'Спазмалгон', 'srokgodnosti': datetime.date(2003, 12, 3), 'kol-vostandartov': 312, 'stoimostodnogostandarta': 1.91}]
Количество таких лекарств:
>>> len(foo_lekarstva)
4
Общая стоимость total_cost в этом списке:
total_cost = 0
for i in foo_lekarstva:
total_cost += i['kol-vostandartov'] * i['stoimostodnogostandarta']
с округлением до второй цифры после запятой:
>>> round(total_cost, 2)
867.93