میخواهیم یک فروشگاه آنلاین را پیادهسازی کنیم که در آن کالاهایی برای فروش بگذاریم و کاربران آنها را خریداری کنند و نظرات خود را راجع به کالاها بگذارند. بخشی از کد فروشگاه توسط فردی زده شدهاست و در حال حاضر در دسترس نیست. شما باید به آن امکاناتی اضافه کنید.
داخل پروژه ۲ فایل پایتون با نامهای 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
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال