می‌خواهیم یک فروشگاه آنلاین را پیاده‌سازی کنیم که در آن کالاهایی برای فروش بگذاریم و کاربران آن‌ها را خریداری کنند و نظرات خود را راجع به کالا‌ها بگذارند. بخشی از کد فروشگاه توسط فردی زده شده‌است و در حال حاضر در دسترس نیست. شما باید به آن امکاناتی اضافه کنید.

داخل پروژه ۲ فایل پایتون با نام‌های models.py و store.py است. شما باید توابع ناقص فایل store.py را تکمیل کنید.

from models import Product, User


class Store:
    def __init__(self):
        self.products = dict()
        self.users = list()

    def add_product(self, product, amount=1):
        self.products[product] = self.products.get(product, 0) + amount

    def remove_product(self, product, amount=1):
        pass

    def add_user(self, username):
        pass

    def get_total_asset(self):
        pass

    def get_total_profit(self):
        pass

    def get_comments_by_user(self, user):
        pass

    def get_inflation_affected_product_names(self):
        pass

    def clean_old_comments(self, date):
        pass

    def get_comments_by_bought_users(self, product):
        pass
Python
store.py

جزئیات پروژه

داخل کلاس Store چند تابع وجود دارد که نیاز به تکمیل دارند. همچنین object آن دارای کالاهای موجود و کاربران ثبت نام شده‌است. کالاها به صورت dictonary ذخیره شده‌اند که هر key آن یک کالا(Product) است و هر ‍‍value آن تعداد موجودی آن کالاست. کاربران هم به صورت list ذخیره شده‌اند.

وظیفه‌ی شما این است که توابع زیر را برای کلاس Store پیاده‌سازی کنید.

تابع remove_product

این تابع وظیفه‌ی حذف کالا از فروشگاه را دارد.در صورت موجود نبود این تعداد کالا، استثایی با پیام ‍‍Not Enough Products پرتاب شود و هیچ کالایی از فروشگاه حذف نشود. در صورتی که موجودی یک کالا به صفر برسد باید از دیکشنری کالاها حذف شود.

تابع add_user

این تابع یک کاربر را به کاربران اضافه می‌کند. در صورتی که نام کاربری تکراری باشد کاربری اضافه نمی‌کند و مقدار None بر می‌گرداند؛ در غیر این صورت، رشته‌ی نام کاربری آن کاربر را برمی‌گرداند.

تابع get_total_asset

این تابع جمع کل دارایی‌های فروشگاه را برمی‌گرداند (دارایی فروشگاه برابر مجموع قیمت کالاهای موجود است.)

تابع get_total_profit

این تابع مقدار سودی که فروشگاه کرده‌است را برمی‌گرداند. مقدار سود فروشگاه برابر جمع قیمت کالاهای فروخته‌شده است. ( تعداد هریک از کالاهای لیست bought_products در کلاس User یک است.)

تابع get_comments_by_user

این تابع لیست متن نظراتی که یک کاربر خاص روی محصولات موجود در فروشگاه گذاشته‌است را بر می‌گرداند (ترتیب آن‌ها مهم نیست)

تابع get_inflation_affected_product_names

این تابع لیستی از نام کالاهایی که تورم روی آن‌ها تاثیر گذاشته‌است را برمی‌گرداند. (تورم روی کالاهایی اثر گذاشته‌است که کالایی هم اسم آن‌ها ولی با قیمت کمتر داخل فروشگاه وجود داشته‌باشد). توجه کنید که اگر چند قیمت از یک کالا موجود باشد، نام آن فقط یک بار باید در لیست بیاید. ترتیب اعضای لیست اهمیتی ندارد.

تابع clean_old_comments

این تابع ورودی یک تاریخ از نوع datetime می‌گیرد و همه‌ی نظراتی که قبل از آن تاریخ روی پست‌ها گذاشته شده‌اند را حذف می‌کند.

تابع get_comments_by_bought_users

این تابع لیستی از متن نظراتی را بر می‌گرداند که صاحب آن، کالا را خریداری کرده‌است.

نکات

  • می‌توانید فایل اولیه این سوال را از این لینک دریافت کنید.
  • توابع شما نباید مقداری را چاپ کنند، بلکه باید مقادیر مورد نظر را بازگردانند.
  • شما تنها مجاز به تغییر فایل store.py هستید.

نحوه ارسال

شما باید کلاس Store موجود در فایل store.py را تکمیل و سپس این فایل را ارسال کنید.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.