text: '''
  BenJek Program
  Mengelola pangkalan data akun driver BenJek.
  '''
  
  drivers = {}
  BenJek_income = 0
  
  
  class BenJekDriver(object):
      '''
      Kelas yang merupakan driver BenJek.
      '''
      def __init__(self, driver_name, service_type):
          '''
          Membuat sebuah instance dari BenJekDriver.
          '''
          self.name = driver_name
          self.service = service_type
          self.salary = 0
          self.fare = 0
  
      def go(self, distance):
          '''
          Melakukan perjalanan untuk seorang driver
          dengan jarak sejauh <distance> dan
          menambahkan pendapatan driver sesuai
          jenis layanannya.
          '''
          if distance <= 0:
              return "Jarak perjalanan tidak boleh <= 0"
  
          if self.name not in drivers.keys():
              return ("{} tidak ada di dalam sistem"
                      .format(self.name))
  
          if self.service == 'NORMAL':
              self.fare = distance*1000*(80/100)
  
          if self.service == 'SPORT':
              if distance < 10:
                  return ("{} tidak bisa melakukan perjalanan"
                          .format(self.name))
              self.fare = distance*2500*(80/100)
  
          if self.service == 'CRUISER':
              if distance < 25:
                  return ("{} tidak bisa melakukan perjalanan"
                          .format(self.name))
              self.fare = distance*7500*(80/100)
  
          self.salary += self.fare
  
          return ("{} melakukan perjalanan sejauh {:.2f} "
                  "dan mendapatkan pendapatan sebesar {:.2f}"
                  .format(self.name, distance, self.fare))
  
      def check(self):
          '''
          Mengembalikan pendapatan dari seorang driver
          sejauh ini.
          '''
          if self.name in drivers.keys():
              return ("{} memiliki pendapatan sebesar Rp.{:.2f}"
                      .format(self.name, self.salary))
  
          return ("{} tidak ada di dalam sistem"
                  .format(self.name))
  
  
  def register(driver_name, service_type):
      '''
      Mendaftarkan driver baru pada dict drivers.
      '''
      service_type = service.upper()
      if driver_name in drivers.keys():
          return ("{} gagal mendaftar sebagai driver BenJek"
                  .format(driver_name))
      if service_type not in ['NORMAL', 'SPORT', 'CRUISER']:
          return ("Tipe driver {} tidak tersedia"
                  .format(service_type))
      drivers[driver_name] = BenJekDriver(driver_name, service_type)
      return ("{} berhasil mendaftar sebagai driver BenJek {}"
              .format(driver_name, service_type))
  
  
  def endmonth():
      '''
      Mengakhiri bulan dan mencetak pendapatan secara keseluruhan.
      '''
      if not drivers:
          summary = "Belum ada driver yang terdaftar!"
          return summary
  
      summary = ("Sudah akhir bulan! "
                 "Pendapatan BenJek bulan ini adalah Rp.{:.2f}\n"
                 "Daftar pendapatan pengemudi:\n"
                 .format(BenJek_income))
      for each_driver in drivers:
          summary += ("{}: Rp.{:.2f}\n"
                      .format(each_driver, drivers[each_driver].salary))
      return summary
  
  
  print(("Selamat datang di program pengelola pangkalan data BenJek.\n"
         "Berikut adalah perintah yang bisa Anda jalankan:\n"
         "DAFTAR <nama_driver> <NORMAL/SPORT>\n"
         "MULAI PERJALANAN <nama_driver> <jarak_ditempuh_km>\n"
         "CEK PENDAPATAN <nama_driver>"
         "AKHIR BULAN\n"
         "Masukkan perintah yang ingin Anda jalankan:"))
  
  while True:
      command = input("\n")
      coms = command.split()
      try:
          if coms[0].upper() == "DAFTAR":
              name = coms[1]
              service = coms[2].upper()
              print(register(name, service))
  
          if coms[0].upper() + ' ' + coms[1].upper() == "MULAI PERJALANAN":
              name = coms[2]
              print(drivers[name].go(float(coms[3])))
              BenJek_income += drivers[name].fare / 4
  
          if coms[0].upper() + ' ' + coms[1].upper() == "CEK PENDAPATAN":
              name = coms[2]
              print(drivers[name].check())
  
          if coms[0].upper() + ' ' + coms[1].upper() == "AKHIR BULAN":
              print(endmonth())
              break
  
      except IndexError:
          print("Perintah salah.")
  
  input("Tekan <enter> untuk keluar dari program...")
  