Олимпиадный тренинг

Задача . Робот


Задача

Темы:

Вы — инженер на космической станции, где работают разные роботы. Ваша задача — создать программу на Python, которая моделирует их работу. 

Описание:

На станции есть три типа роботов: уборщики, ремонтники и исследователи. У каждого робота есть имя, уровень энергии и состояние (готов или занят). Вы должны:

  • Создать базовый класс Robot с приватными атрибутами и несколькими вариантами конструктора.
  • Реализовать дочерние классы для разных типов роботов.
  • Вывод информации о роботе должен осуществлять через оператор print(object_robot), в виде 
    Робот <name>
    статус:  <готов/занят>
    энергия: <уровень энергии>
  1. Базовый класс Robot:
    • Приватные атрибуты: name (имя), energy (энергия, от 0 до 100), status (состояние: "готов", "занят" и "разряжен").
    • Конструктор который принимает:
      • только name, устанавливает energy = 100, status = "готов".
      • name и energy (проверяет, что энергия в диапазоне 0-100, иначе ставит 100), status = "готов".
      • объект класса Robot, копирует его имя, устанавливает energy = 100, меняет назначение (тип робота) на новый, status = "готов".
    • Методы:
      • get_name() — возвращает имя робота.
      • get_energy() — возвращает текущий уровень энергии.
      • get_status() — возвращает состояние робота.
      • work() — вычитает 10 единиц энергии, если хватает и статус "готов", меняет статус на "занят" (иначе выводит сообщение об ошибке: "Требуется подзарядка" и меняться статус на "разряжен").
      • recharge() — восстанавливает энергию до 100, меняет статус на "готов".
  2. Дочерние классы (наследуются от базового класса Robot):
     каждый дочерний класс должен содержать метод work(), при запуске которого сначала выполняется метод work() базового класса, затем метод дочернего класса. 
    • CleanerRobot (робот-уборщик):
      • выводит "Робот [имя] убирает мусор на станции".
    • RepairRobot (робот-ремонтник):
      • выводит "Робот [имя] чинит панель управления".
    • ExplorerRobot (робот-исследователь):
      • выводит "Робот [имя] исследует астероид".
  3. Метод work() дочернего класса должен выдавать сообщение о том, что робот делает, если он в статусе "готов" или "занят".
              Если робот находится в статусе "разряжен", то то он должен вывести "Робот [имя] разряжен"


Напишите реализацию данных классов, и в качестве ответа прикрепит файл с раширением py.

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя