حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش کار با فایل در پایتون؛ CSV، JSON و گزارش‌گیری

جمع درآمد هر محصول با دیکشنری پایتون

گزارش فروش پایتون؛ شمارش، مبلغ و خروجی قابل خواندن · 0٪

✍️ برای گزارش محصولی، نام محصول کلید گروه است و مبلغ ردیف به جمع همان گروه اضافه می‌شود. لازم نیست ردیف‌ها از قبل کنار هم باشند. دیکشنری می‌تواند فروش‌های دفتر در ابتدا و انتهای فهرست را در یک نتیجه جمع کند، بدون اینکه جزئیات ورودی را تغییر دهد.

مثلاً دو دفتر با قیمت ده و بعد یک دفتر با قیمت پانزده، درآمد دفتر را سی‌وپنج می‌کند. قیمت واحد ممکن است بین دو فروش همان محصول فرق کند، پس نمی‌توان مجموع تعدادها را در یک قیمت دلخواه ضرب کرد؛ مبلغ هر ردیف را اول جدا حساب می‌کنیم و بعد جمع می‌زنیم.

کد ناقص حلقه را دارد؛ محاسبه مبلغ و افزایش گروه را کامل کن. داده‌ها از قبل معتبرند: product پاک‌شده و غیرخالی، quantity صحیح مثبت و unit_price صحیح نامنفی است. خروجی فقط درآمد هر محصول است؛ در پروژه نهایی تعدادها را هم کنار آن نگه می‌داریم. خطای رایج، بازنویسی جمع قبلی با مبلغ تازه یا استفاده از مقدار unit_price به تنهایی است. فهرست خالی دیکشنری خالی می‌دهد و محصول با قیمت صفر باید با درآمد صفر در گزارش حضور داشته باشد.

تابع آماده course_check از ورودی کپی عمیق می‌گیرد، تابع اصلی را اجرا می‌کند و تغییر ورودی را رد می‌کند؛ آن را نگه دار و فقط تابع اصلی را کامل کن.

فعالیت شما

تابع revenue_by_product(rows) فهرست رکوردهای معتبر product رشته پاک‌شده، quantity صحیح مثبت و unit_price صحیح نامنفی می‌گیرد و دیکشنری {محصول:مجموع quantity*unit_price} می‌دهد. تکرار نام تجمیع شود، قیمت‌های متفاوت مستقل محاسبه شوند، محصول با درآمد صفر هم باقی بماند. خالی {}؛ دو فروش دفتر با (2,10) و (1,15) درآمد 35 دارند. ورودی تغییر نکند. course_check آماده را نگه دار؛ این تابع تغییر ورودی را رد و همان خروجی اصلی را برمی‌گرداند.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

def revenue_by_product(rows):
    totals = {}
    for row in rows:
        # TODO: add this row's revenue to its product total
        pass
    return totals


def course_check(*args):
    from copy import deepcopy
    before = deepcopy(args)
    result = revenue_by_product(*args)
    if args != before:
        raise AssertionError("ورودی نباید تغییر کند.")
    return result