Python · از صفر

گزارش فروش از متن CSV

تمرین مرحلهٔ 15: خواندن جدول با DictReader و تبدیل صریح عددها؛ بدون نیاز به یادگیری ماشین و با ارزیابی واقعی خروجی.

۴۸ دقیقه · ۹۵ XP · csv · io · DictReader

هدف و راهنمای انجام

خواندن جدول با DictReader و تبدیل صریح عددها

ورودی

request.json: csv: متن CSV دارای product,quantity,price؛ quantity صحیح غیرمنفی و price عدد غیرمنفی. عنوان بدون سطر مجاز است.

خروجی

result.json مطابق ساختار مثال؛ تمام کلیدهای نشان‌داده‌شده الزامی هستند.

  1. مقالهٔ پیش‌نیاز را بخوانید و نمونه‌کد آن را جدا اجرا کنید.
  2. متن csv ورودی را با io.StringIO به شیئی شبیه فایل تبدیل می‌کنیم؛ بنابراین به فایل بیرونی نیاز نداریم. ستون‌های product، quantity و price الزامی‌اند و داده‌های این تمرین معتبرند. مقدار سلول‌ها رشته است، پس تعداد و قیمت را به عدد تبدیل می‌کنیم. فروش هر سطر quantity ضرب در price و فروش هر محصول مجموع سطرهای همان نام است.
  3. در main.py تابع solve(data) را تکمیل کنید؛ بخش خواندن request.json و نوشتن result.json را حفظ کنید.
  4. با ورودی نمونه و حالت‌های مرزیِ راهنما اجرا کنید؛ سپس ارزیابی را بزنید.

Python 3؛ دادهٔ ورودی طبق قرارداد است. تابع solve باید برای همهٔ ورودی‌ها کار کند، نه فقط مثال. کتابخانهٔ خارجی لازم نیست؛ ماژول‌های استاندارد همراه Python 3 هستند.

مثال ورودی و خروجی

{
    "input": {
        "csv": "product,quantity,price\nbook,2,10\npen,3,2\nbook,1,5\n"
    },
    "output": {
        "total": 31,
        "by_product": {
            "book": 25,
            "pen": 6
        }
    }
}

معیارهای موفقیت

  • ساختار و نوع خروجی با قرارداد برابر است.
  • محاسبه برای چند ورودی متفاوت و حالت‌های مرزی درست است.
  • اجرای ساده XP نمی‌دهد؛ فقط قبولی ارزیابی معتبر باعث ثبت تکمیل می‌شود.

کتابخانه‌ها: json, pathlib

پیش‌نیاز و ترتیب یادگیری

  • یونیکد و translate؛ عادی‌سازی رقم‌های فارسی
کتابخانهٔ استاندارد csv؛ خواندن جدول بدون نصب بسته ←

برای شروع، مقالهٔ بالا را بخوانید. Python 3 و کتابخانه‌های موردنیاز در میزکار آماده‌اند؛ نصب آنلاین از ترمینال میزکار لازم نیست.

برای نوشتن و اجرای کد وارد شوید