میخواهیم یک فروشگاه آنلاین را پیادهسازی کنیم که در آن کالاهایی برای فروش بگذاریم و کاربران آنها را خریداری کنند و نظرات خود را راجع به کالاها بگذارند. بخشی از کد فروشگاه توسط فردی زده شدهاست و در حال حاضر در دسترس نیست. شما باید به آن امکاناتی اضافه کنید.
داخل پروژه ۲ فایل پایتون با نامهای 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
جزئیات پروژه
داخل کلاس Store چند تابع وجود دارد که نیاز به تکمیل دارند. همچنین object آن دارای کالاهای موجود و کاربران ثبت نام شدهاست. کالاها به صورت dictonary ذخیره شدهاند که هر key آن یک کالا(Product) است و هر value آن تعداد موجودی آن کالاست. کاربران هم به صورت list ذخیره شدهاند.
وظیفهی شما این است که توابع زیر را برای کلاس Store پیادهسازی کنید.
تابع remove_product
remove_productاین تابع وظیفهی حذف کالا از فروشگاه را دارد.در صورت موجود نبود این تعداد کالا، استثایی با پیام Not Enough Products پرتاب شود و هیچ کالایی از فروشگاه حذف نشود. در صورتی که موجودی یک کالا به صفر برسد باید از دیکشنری کالاها حذف شود.
تابع add_user
add_userاین تابع یک کاربر را به کاربران اضافه میکند. در صورتی که نام کاربری تکراری باشد کاربری اضافه نمیکند و مقدار None بر میگرداند؛ در غیر این صورت، رشتهی نام کاربری آن کاربر را برمیگرداند.
تابع get_total_asset
get_total_assetاین تابع جمع کل داراییهای فروشگاه را برمیگرداند (دارایی فروشگاه برابر مجموع قیمت کالاهای موجود است.)
تابع get_total_profit
get_total_profitاین تابع مقدار سودی که فروشگاه کردهاست را برمیگرداند. مقدار سود فروشگاه برابر جمع قیمت کالاهای فروختهشده است. ( تعداد هریک از کالاهای لیست bought_products در کلاس User یک است.)
تابع get_comments_by_user
get_comments_by_userاین تابع لیست متن نظراتی که یک کاربر خاص روی محصولات موجود در فروشگاه گذاشتهاست را بر میگرداند (ترتیب آنها مهم نیست)
تابع get_inflation_affected_product_names
get_inflation_affected_product_namesاین تابع لیستی از نام کالاهایی که تورم روی آنها تاثیر گذاشتهاست را برمیگرداند. (تورم روی کالاهایی اثر گذاشتهاست که کالایی هم اسم آنها ولی با قیمت کمتر داخل فروشگاه وجود داشتهباشد). توجه کنید که اگر چند قیمت از یک کالا موجود باشد، نام آن فقط یک بار باید در لیست بیاید. ترتیب اعضای لیست اهمیتی ندارد.
تابع clean_old_comments
clean_old_commentsاین تابع ورودی یک تاریخ از نوع datetime میگیرد و همهی نظراتی که قبل از آن تاریخ روی پستها گذاشته شدهاند را حذف میکند.
تابع get_comments_by_bought_users
get_comments_by_bought_usersاین تابع لیستی از متن نظراتی را بر میگرداند که صاحب آن، کالا را خریداری کردهاست.
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
- توابع شما نباید مقداری را چاپ کنند، بلکه باید مقادیر مورد نظر را بازگردانند.
- شما تنها مجاز به تغییر فایل
store.pyهستید.
نحوه ارسال
شما باید کلاس Store موجود در فایل store.py را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال