در این سوال شما باید یک کلاس مدیریت فاکتورهای فروش برای شرکت سجادینه طراحی کنید. در شرکت سجادینه افراد زیادی میتوانند فاکتورهای مالی را ثبت کنند و هر کدام از این افراد تاریخ فاکتور را به یکی از ۶ فرمتی که در جدول پایین آمده ثبت میکنند.
برای مثال یک فاکتور که روز دوم ماه ششم سال ۲۰۲۰ ثبت شود، میتواند طبق یکی از فرمتهای زیر ثبت شود:
| زمانی که در سیستم ثبت میشود | فرمت زمان | 
|---|---|
02/06/2020 | 
dd/mm/yyyy | 
02/2020/06 | 
dd/yyyy/mm | 
2020/06/02 | 
yyyy/mm/dd | 
2020/02/06 | 
yyyy/dd/mm | 
    06/2020/02 | 
mm/yyyy/dd | 
 06/02/2020 | 
mm/dd/yyyy | 
شما باید کلاس FactorHandler را در این فایل کامل کنید به طوری که سه تابع زیر عملکردهای خواسته شده را داشته باشند (عملکرد تابع __init__ اهمیت ندارد).
class FactorHandler:
    def __init__(self):
        pass
    def add_factor(self, time_format, time, value):
        pass
    def remove_all_factors(self, time_format, time):
        pass
    def get_sum(self, time_format, start_time, finish_time):
        pass
تابع add_factor
add_factorاین تابع به ترتیب سه ورودی time_format و time و value را ورودی میگیرد. مقدار time_format یکی از ۶ رشته جدول بالا است و time تاریخ ثبت فاکتور بر حسب فرمت داده شده است. مقدار value هم، هزینه فروش فاکتور داده شده برای آن تاریخ را مشخص میکند.
تابع remove_all_factors
remove_all_factorsاین تابع به ترتیب سه ورودی time_format و time  را ورودی میگیرد که هر دویشان مانند تابع add_factor هستند؛ این تابع تمام فاکتورهایی که در تاریخ داده شده ثبت شدهاند را از لیست فاکتورها حذف میکند.
تابع get_sum
get_sumاین تابع به ترتیب سه ورودی time_format و start_time  و finish_time را ورودی میگیرد و جمع هزینه فاکتورهایی که از تاریخ start_time تا finish_time ثبتشدهاند (شامل خود این دو تاریخ) را برمیگرداند.
در همه توابع تضمین میشود که time حتما بر حسب فرمت time_format است. توجه کنید که هیچ یک از توابع بالا را نباید استاتیک تعریف کنید.
نمونه
>>> fh = FactorHandler()
>>> fh.add_factor("dd/mm/yyyy", "02/10/2019", 10)
>>> fh.add_factor("dd/mm/yyyy", "03/10/2019", 20)
>>> fh.add_factor("dd/mm/yyyy", "03/10/2019", 30)
>>> fh.add_factor("dd/mm/yyyy", "05/10/2019", 5)
>>> fh.get_sum("yyyy/dd/mm", "2019/02/10", "2019/03/10")
60
>>> fh.remove_all_factors("mm/dd/yyyy", "10/03/2019")
>>> fh.get_sum("yyyy/dd/mm", "2019/02/10", "2019/05/10")
15
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
 - تابع 
get_sumنباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند. 
نحوه ارسال
شما باید کلاس FactorHandler موجود در فایل solution.py را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال