✍️ پیش از محاسبه گزارش باید نوع دادهها را آماده کنیم. رشته '3' کنار رشته '20' هنوز یک تعداد و قیمت قابل ضرب نیست؛ در پایتون ضرب رشته در عدد، تکرار متن است و جمع رشتهها اتصال میسازد. بنابراین فقط ستونهای عددی را با int تبدیل میکنیم و نام محصول را رشته نگه میداریم.
مثلاً ردیف «مداد، سه، بیست» در داده واقعی این درس با رقمهای متنی مداد,3,20 میآید و باید به رکوردی با quantity برابر عدد سه و unit_price برابر عدد بیست تبدیل شود. در این فعالیت دادهها معتبرند؛ بحث عدد خراب و حذف ردیف را در بخش بعد جدا تمرین میکنیم.
تابع مستقل خودت را بنویس: فایل نمونه را بساز، با DictReader بخوان و برای هر ردیف یک دیکشنری تازه با سه کلید خواستهشده بساز. header ثابت است و product را فعلاً پاکسازی نکن. خطای رایج، باقی گذاشتن یکی از دو ستون عددی به صورت رشته یا حذف محصولی با قیمت صفر است؛ صفر قیمت معتبر است. اگر فقط عنوان باشد، حلقه هیچ ردیفی ندارد و خروجی خالی خواهد بود. از کتابخانه شخص ثالث استفاده نکن؛ csv و تبدیلهای ساده کافیاند.
فعالیت شما
تابع numeric_csv(text) متن CSV با header دقیق product,quantity,unit_price و ردیفهای معتبر میگیرد؛ داخل همان اجرا فایل UTF-8 بسازد و بخواند. خروجی فهرست دیکشنریهای product رشته دستنخورده، quantity=int و unit_price=int است. تعداد صحیح مثبت و قیمت صحیح نامنفی تضمین شدهاند؛ فقط header یا متن خالی [] است. برای 'مداد,3,20' خروجی رکورد با quantity:3 و unit_price:20 است؛ کامای نقلقولدار را رعایت کن.