Advertisement
ksieradzinski

Untitled

Jun 5th, 2025
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. # Zaimplementuj klasę Driver, która umożliwia rejestrowanie przejechanych kilometrów
  2. # i wypłacanie wynagrodzenia według zadanej stawki za kilometr.
  3. # Jeżeli w jednym zgłoszeniu kierowca przejedzie więcej niż 100 km, nadmiar kilometrów
  4. # należy liczyć jako trasa długodystansowa i wypłacać za nią 1.5× stawkę.
  5.  
  6. # >>> driver = Driver('Anna', 'Kowalska', 2.0)
  7. # >>> driver.register_trip(80)
  8. # >>> driver.pay_salary()
  9. # 160.0
  10. # >>> driver.pay_salary()
  11. # 0.0
  12.  
  13. # >>> driver.register_trip(150)
  14. # >>> driver.pay_salary()
  15. # = 100 * 2 + 50 * 1.5 * 2 350
  16.  
  17. class Driver:
  18. def __init__(self, first_name: str, last_name: str, rate_per_km: float):
  19. self.first_name = first_name
  20. self.last_name = last_name
  21. self.rate_per_km = rate_per_km
  22. self.balance = 0
  23.  
  24. def register_trip(self, distance: float):
  25. if distance < 0:
  26. raise ValueError("Dystans musi być dodatni")
  27.  
  28. if distance > 100:
  29. long_distance = distance - 100
  30. to_pay = self.rate_per_km * long_distance * 1.5 + self.rate_per_km * 100
  31. else:
  32. to_pay = self.rate_per_km * distance
  33.  
  34. self.balance += to_pay
  35.  
  36. def pay_salary(self):
  37. amount = self.balance
  38. self.balance = 0
  39. return amount
  40.  
  41. class Driver2:
  42. def __init__(self, first_name: str, last_name: str, rate_per_km: float):
  43. self.first_name = first_name
  44. self.last_name = last_name
  45. self.rate_per_km = rate_per_km
  46. self.trips = []
  47.  
  48. def register_trip(self, distance: float):
  49. if distance > 0:
  50. self.trips.append(distance)
  51.  
  52. def pay_salary(self):
  53. balance = 0
  54. for trip in self.trips:
  55. if trip > 100:
  56. long_distance = trip - 100
  57. to_pay = self.rate_per_km * long_distance * 1.5 + self.rate_per_km * 100
  58. else:
  59. to_pay = self.rate_per_km * trip
  60.  
  61. balance += to_pay
  62.  
  63. self.trips = []
  64. return balance
  65.  
  66. driver = Driver2('Anna', 'Kowalska', 2.0)
  67. driver.register_trip(80)
  68. print(driver.pay_salary())
  69. # 160.0
  70. print(driver.pay_salary())
  71. # 0.0
  72.  
  73. driver.register_trip(150)
  74. print(driver.pay_salary())
  75. # 350
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement