روز
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
روز
ساعت
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ساعت
دقیقه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
دقیقه
ثانیه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ثانیه

در این سوال شما باید یک کلاس مدیریت فاکتورهای فروش برای شرکت سجادینه طراحی کنید. در شرکت سجادینه افراد زیادی می‌توانند فاکتورهای مالی را ثبت کنند و هر کدام از این افراد تاریخ فاکتور را به یکی از ۶ فرمتی که در جدول پایین آمده ثبت می‌کنند.

برای مثال یک فاکتور که روز دوم ماه ششم سال ۲۰۲۰ ثبت شود، می‌تواند طبق یکی از فرمت‌های زیر ثبت شود:

زمانی که در سیستم ثبت می‌شود فرمت زمان
‍‍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
Python
solution.py

تابع add_factor

این تابع به ترتیب سه ورودی time_format و time و value را ورودی می‌گیرد. مقدار time_format یکی از ۶ رشته جدول بالا است و time تاریخ ثبت فاکتور بر حسب فرمت داده شده است. مقدار value هم، هزینه فروش فاکتور داده شده برای آن تاریخ را مشخص می‌کند.

تابع remove_all_factors

این تابع به ترتیب سه ورودی time_format و time را ورودی می‌گیرد که هر دویشان مانند تابع add_factor هستند؛ این تابع تمام فاکتورهایی که در تاریخ داده شده ثبت شده‌اند را از لیست فاکتورها حذف می‌کند.

تابع 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
Python
terminal

نکات

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

نحوه ارسال

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


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