.لینک‌های مفید برای شرکت در مسابقه:

می‌توانید سوال‌های خود را در رابطه با سوالات و دیگر بخش‌های پایتون از قسمت "سوال بپرسید" مطرح کنید.

توجه کنید که نسخه پایتون استفاده در سوالات ۳.۷ است.

قَطار یا قاطِر؟


عَلی که با کمک شما توانست از مخمصه‌ی خرید ۳ پیتزا نجات پیدا کند؛ حال می‌خواهد بعنوان تشکر، پیتزایی که برای شما بفرستد. ولی از آن‌جایی که شما در شهر دیگری زندگی می‌کنید؛ دو راه برای فرستادن پیتزا به شما پیشنهاد می‌کند:

  1. ارسال پیتزا با قَطار
  2. ارسال پیتزا با قاطِر

از آن‌جایی که شما برای حل کردن این سوال و رفتن به سوال بعدی، عجله‌ی بسیاری دارید؛ گزینه‌ی اول را انتخاب می‌کنید. ولی امان از دل غافل! شما باید دو کلاس خواسته شده را پیاده‌سازی کنید تا شرکت راه‌آهن، این پیتزا را برای شما بفرستد.

کلاس Train از پیش پیاده‌سازی شده است ولی دو کلاس Trip و Passenger را شما باید پیاده‌سازی کنید.

کلاس قطار Train

متد سازنده __init__🔗

این متد در فایل اولیه مقداردهی شده است و نباید آن را دستکاری کنید. ویژگی‌هایی که در این متد به شیء اختصاص داده می‌شوند، عبارت‌اند از:

  • آخرین شهر بازدید شده last_visited_city : از نوع str می‌باشد.
  • ظرفیت بار weight_capacity: از نوع float می‌باشد.
  • وضعیت is_on_trip: از نوع bool است؛ در صورتی که True باشد، قطار در حال سفر است و اگر False باشد یعنی در ایستگاه راه آهن مستقر است.
کلاس سفر Trip

ویژگی‌های کلاس (Class Attributes)🔗

  • ویژگی all_cities: این ویژگی برابر با یک تاپل از همه شهرهایی است که امکان ساخت راه آهن در آن‌ها وجود دارد. این ویژگی در فایل اولیه مقداردهی شده است و نباید آن را دستکاری کنید.

متد سازنده __init__🔗

این متد در فایل اولیه مقداردهی شده است و نباید آن را دستکاری کنید. ویژگی‌هایی که در این متد به شیء اختصاص داده می‌شوند، عبارت‌اند از:

  • قطار train: از نوع Train می‌باشد.
  • شهر مبدا origin_city: از نوع str می‌باشد.
  • شهر مقصد destination_city: از نوع str می‌باشد.
  • مسافران passengers : از نوع list می‌باشد.

جزئیات🔗

متد origin_city_validation

این متد یک ورودی به نام origin_city می‌گیرد:

  • اگر این ورودی در لیست all_cities موجود نباشد، یک Exception با پیغام This input is not a verified city! پرتاب می‌کند.
  • اگر این ورودی با شهر مقصد برابر باشد، یک Exception با پیغام Origin and destination cities can't be the same! پرتاب می‌کند.
  • اگر این ورودی با آخرین شهر بازدید شده قطار برابر نباشد، یک Exception با پیغام The train of the trip is not available in the origin city! پرتاب می‌کند.

در نهایت اگر هیچ‎کدام از حالت‌های فوق صادق نبود باید origin_city برگردانده شود.

متد train_validation

این متد یک ورودی به نام train می‌گیرد:

  • اگر این ورودی از جنس قطار (کلاس Train) نباشد، یک Exception با پیغام This input is not a train! پرتاب می‌کند.
  • در صورتی که قطار در حال سفر باشد، یک Exception با پیغام This train is not available! پرتاب می‌کند.

در نهایت اگر هیچ‎کدام از حالت‌های فوق صادق نبود باید train برگردانده شود.

متد جادویی

داندرمتدی را برای این کلاس بازنویسی کنید که هنگام صدا زدن شیء سفر، «ظرفیتِ وزنِ بارِ باقی‌مانده از قطارِ سفر» برگردانده شود.

مثلا اگر یک سفر قطاری با ظرفیت وزن 1000 کیلوگرم و دو مسافر با وزن بار 60 و 70 کیلوگرم داشته باشد، هنگام صدا زدن این سفر، عدد 870 برگردانده می‌شود.

کلاس مسافر Passenger

متد سازنده __init__🔗

این متد در فایل اولیه مقداردهی شده است و نباید آن را دستکاری کنید. ویژگی‌هایی که در این متد به شیء اختصاص داده می‌شوند، عبارت‌اند از:

  • نام fullname: از نوع str می‌باشد.
  • وزن بار load_weight: از نوع float می‌باشد.

جزئیات🔗

متد attend_trip

این متد در ورودی یک سفر می‌گیرد و در صورتی که بار مسافر از «ظرفیتِ وزنِ بارِ باقی‌مانده از قطارِ سفر» کمتر یا مساوی باشد، مسافر را به لیست مسافران سفر اضافه می‌کند. در غیر این صورت یک Exception با پیغام Heavy load! پرتاب می‌کند.

متد cancel_trip

این متد در ورودی یک سفر می‌گیرد و در صورتی که مسافر در لیست مسافران آن سفر موجود باشد، مسافر را از لیست مسافران سفر حذف می‌کند. در غیر این صورت یک Exception با پیغام This passenger is not attended to this trip! پرتاب می‌کند.

متد جادویی

داندرمتدی را برای این کلاس بازنویسی کنید که اگر یک شیء مسافر print شود، به جای آدرس آن شیء در حافظه، نام مسافر چاپ شود.

نکات🔗

  • می‌توانید فایل اولیه این سوال را از این لینک دریافت کنید.
  • برای ارسال باید یک فایل پایتون ارسال کنید که در آن فقط کلاس‌های Passenger، Train و Trip به شکل گفته شده وجود داشته باشند.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.