یک شرکت فراهمکننده سرویس اینترنت (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
- عاشقان رسانههای اجتماعی (متد social_media_lovers):
- مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت خارجی، از مصرف اینترنت خارجی حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
- مثلا اگر علی در تیر 97 به میزان 50 گیگ اینترنت خارجی مصرف کرده اما حداقل 90% سایر کاربران، هر کدام در تیر 97 مصرفشان از اینترنت خارجی کمتر از 50 گیگ بوده، علی از عاشقان رسانههای اجتماعی در تیر 97 بوده است.
- منظور از کاربر فعال در یک بازه زمانی خاص، کاربری است که حداقل یک رکورد
TrafficUsage
در آن ماه و به نام آن کاربر ثبت شده باشد.
- مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت خارجی، از مصرف اینترنت خارجی حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
- مشتریان عشق دانلود (متد download_lovers):
- مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت شبانه، بیش از مجموع مصرف آنها از اینترنت روزانه باشد. نکته:
- در هر یک از دو سرویس مورد نظر، به هر دلیلی اگر کاربری پیدا نشود، باید یک لیست خالی برگردانده شود (خروجی متد
None
نباشد).
نمونه
با اجرای ماژول main
که داخل پروژه اولیه قرار دارد، خروجی زیر مورد انتظار است:
social media lovers:
a100
download lovers:
a100
a101
a102
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
- تابعهای شما نباید مقداری را چاپ کنند، بلکه باید مقادیر مورد نظر را بازگردانند.
نحوه ارسال
شما باید کلاس TrafficUsageService
موجود در فایل service.py
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال