یک شرکت فراهم‌کننده سرویس اینترنت (ISP- Internet Service Provider) دو سال است که شروع به کار کرده و در این مدت برای جذب مشتری بیشتر، صرفا سرویس نامحدود اینترنت و با قیمت مناسب ارائه داده است. این شرکت در این دو سال، میزان و نحوه مصرف هر یک مشتریان خود را با دقت رصد کرده است و حالا که بازار را در دست گرفته و ارایه سرویس نامحدود دیگر برایش مقرون به‌‎صرفه نیست، قصد دارد متناسب با نیازهای مشتریانش، تعدادی سرویس محدود تعریف کرده و به آن‎ها پیشنهاد دهد. اولین قدم برای این کار، دسته‎‌بندی کاربران بر اساس فاکتورهای مختلف است و شما هم به همین دلیل استخدام شده‎‌اید.

اطلاعات مربوط به میزان مصرف هر مشتری در تاریخ‎‌های مختلف در اشی‎ایی از نوع TrafficUsage ذخیره شده است و توسط متد load_all در کلاس TrafficUsageDao در قالب یک لیست در اختیار شما قرار می‎‌گیرد. هر رکورد از این لیست، دارای اطلاعات زیر است:

  • user: کاربر
  • internal: مشخص می‌کند که اینترنت مصرفی داخلی بوده یا خارجی
  • nightly: مشخص می‌کند اینترنت مصرفی مربوط به حجم روزانه بوده یا شبانه
  • date: تاریخ مصرف حجم اینترنت
    • یک رشته با فرمت yy/MM/dd است (مانند 97/08/25).
  • usage: میزان مصرف اینترنت بر حسب مگابایت

در کلاس TrafficUsageService قرار است به کمک این داده‌‎ها، اطلاعات زیر استخراج شده و در دسته‎‌بندی مشتریان مورد استفاده قرار بگیرد:

from material import TrafficUsageDao


class TrafficUsageService:
    def __init__(self, traffic_usage_dao: TrafficUsageDao):
        self.traffic_usage_dao = traffic_usage_dao

    def social_media_lovers(self, year: int, month: int):
        pass

    def download_lovers(self, year: int, month: int):
        pass
Python
service.py
  1. عاشقان رسانه‎‌های اجتماعی (متد social_media_lovers):
    • مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آن‎ها از اینترنت خارجی، از مصرف اینترنت خارجی حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
      • مثلا اگر علی در تیر 97 به میزان 50 گیگ اینترنت خارجی مصرف کرده اما حداقل 90% سایر کاربران، هر کدام در تیر 97 مصرفشان از اینترنت خارجی کمتر از 50 گیگ بوده، علی از عاشقان رسانه‌های اجتماعی در تیر 97 بوده است.
      • منظور از کاربر فعال در یک بازه زمانی خاص، کاربری است که حداقل یک رکورد TrafficUsage در آن ماه و به نام آن کاربر ثبت شده باشد.
  2. مشتریان عشق دانلود (متد download_lovers):
    • مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آن‌ها از اینترنت شبانه، بیش از مجموع مصرف آن‎ها از اینترنت روزانه باشد. نکته:
  • در هر یک از دو سرویس مورد نظر، به هر دلیلی اگر کاربری پیدا نشود، باید یک لیست خالی برگردانده شود (خروجی متد None نباشد).

نمونه

با اجرای ماژول main که داخل پروژه اولیه قرار دارد، خروجی زیر مورد انتظار است:

social media lovers:
a100
download lovers:
a100
a101
a102
Plain text

نکات

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

نحوه ارسال

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


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