✍️ گزارش روزانه همان الگوی گروهبندی محصول را دارد، فقط کلید گروه تاریخ است. همه فروشهای یک روز باید در یک مبلغ جمع شوند. اگر هر ردیف مقدار قبلی همان روز را جایگزین کند، گزارش فقط آخرین فروش روز را نشان میدهد و درآمد واقعی کمتر دیده میشود.
مثلاً روز اول یک فروش دوعددی با قیمت پنج و یک فروش یکعددی با قیمت هفت دارد؛ جمع آن روز هفده است. اگر فروش روز دوم بین این دو ردیف باشد، باز هم گروه اول باید درست جمع شود. ترتیب ورودی قرار نیست مرتب باشد یا ردیفهای همروز کنار هم قرار بگیرند.
کد اولیه مبلغ هر ردیف را درست محاسبه میکند ولی در ثبت گروه اشتباه دارد. بخش بهروزرسانی را اصلاح کن تا مقدار هر روز درست تجمیع شود؛ ترتیب کلیدهای دیکشنری در این تمرین مهم نیست. تمام تاریخها و عددها در این گام معتبرند؛ هدف، خطای تجمیع است. خطای رایج، فرض کردن اینکه هر روز فقط یک ردیف فروش دارد یا حذف فروش رایگان است. روز با درآمد صفر هم یک روز دارای فروش است و باید در خروجی باقی بماند.
تابع آماده course_check از ورودی کپی عمیق میگیرد، تابع اصلی را اجرا میکند و تغییر ورودی را رد میکند؛ آن را نگه دار و فقط تابع اصلی را کامل کن.
فعالیت شما
تابع revenue_by_day(rows) فهرست رکوردهای معتبر دارای date دقیق ISO، quantity صحیح مثبت و unit_price صحیح نامنفی میگیرد. دیکشنری {روز:جمع مبلغ ردیفها} بده؛ ردیفهای همروز حتی غیرمتوالی تجمیع شوند و درآمد صفر حذف نشود. خالی {}؛ دو ردیف یک روز با (2,5) و (1,7) جمع 17 میدهند. ورودی تغییر نکند. course_check آماده را نگه دار؛ این تابع تغییر ورودی را رد و همان خروجی اصلی را برمیگرداند.