✍️ گزارش ماشینی برای پردازش خوب است، ولی انسان معمولاً یک خلاصه خوانا میخواهد. متن گزارش هم قرارداد دارد: ترتیب خطها، عنوانها و جداکنندهها باید مشخص باشد تا اجرای دوباره همان داده همان نتیجه را بدهد. ترتیب تصادفی ورود فروشها نباید شکل نمایش روزانه را عوض کند.
مثلاً اگر درآمد کل سی و روزهای اول و دوم بهترتیب ده و بیست باشند، اول خط «درآمد کل: 30» و بعد دو خط تاریخ به ترتیب صعودی نوشته میشود. عددها در این تمرین رقم لاتین و بدون جداکننده هزارگاناند؛ هدف قالب ثابت ساده است، نه قالببندی مالی پیچیده.
تابع را از صفر بنویس: مبلغ هر ردیف، جمع کل و جمع هر روز را حساب کن، خط اول را بساز و سپس روزهای مرتبشده را اضافه کن. بین خطها دقیقاً یک \n بگذار و پایان خط اضافه نده. خطای رایج، استفاده از ترتیب اولین مشاهده روزها یا برگرداندن print به جای رشته است. برای ورودی خالی فقط خط درآمد صفر را میخواهیم. در پروژه بعد همین منطق را به جای متن، داخل JSON ذخیره میکنیم تا برنامه دیگری هم بتواند آن را بخواند.
تابع آماده course_check از ورودی کپی عمیق میگیرد، تابع اصلی را اجرا میکند و تغییر ورودی را رد میکند؛ آن را نگه دار و فقط تابع اصلی را کامل کن.
فعالیت شما
تابع readable_report(rows) رکوردهای معتبر date دقیق ISO و quantity>0 و unit_price>=0 صحیح میگیرد. رشته خروجی: خط اول دقیقاً 'درآمد کل: N'؛ سپس برای هر روز با ترتیب صعودی یک خط 'YYYY-MM-DD: M' با درآمد آن روز. عددها لاتین، بدون هزارگان و پایان خط اضافه؛ بین خطها یک \n. خالی فقط 'درآمد کل: 0'. برای یک ردیف 2026-01-01 با تعداد2 و قیمت5 خروجی 'درآمد کل: 10\n2026-01-01: 10' است. ورودی تغییر نکند. course_check آماده را نگه دار؛ این تابع تغییر ورودی را رد و همان خروجی اصلی را برمیگرداند.