Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Zaimplementuj klasę Driver, która umożliwia rejestrowanie przejechanych kilometrów
- # i wypłacanie wynagrodzenia według zadanej stawki za kilometr.
- # Jeżeli w jednym zgłoszeniu kierowca przejedzie więcej niż 100 km, nadmiar kilometrów
- # należy liczyć jako trasa długodystansowa i wypłacać za nią 1.5× stawkę.
- # >>> driver = Driver('Anna', 'Kowalska', 2.0)
- # >>> driver.register_trip(80)
- # >>> driver.pay_salary()
- # 160.0
- # >>> driver.pay_salary()
- # 0.0
- # >>> driver.register_trip(150)
- # >>> driver.pay_salary()
- # = 100 * 2 + 50 * 1.5 * 2 350
- class Driver:
- def __init__(self, first_name: str, last_name: str, rate_per_km: float):
- self.first_name = first_name
- self.last_name = last_name
- self.rate_per_km = rate_per_km
- self.balance = 0
- def register_trip(self, distance: float):
- if distance < 0:
- raise ValueError("Dystans musi być dodatni")
- if distance > 100:
- long_distance = distance - 100
- to_pay = self.rate_per_km * long_distance * 1.5 + self.rate_per_km * 100
- else:
- to_pay = self.rate_per_km * distance
- self.balance += to_pay
- def pay_salary(self):
- amount = self.balance
- self.balance = 0
- return amount
- class Driver2:
- def __init__(self, first_name: str, last_name: str, rate_per_km: float):
- self.first_name = first_name
- self.last_name = last_name
- self.rate_per_km = rate_per_km
- self.trips = []
- def register_trip(self, distance: float):
- if distance > 0:
- self.trips.append(distance)
- def pay_salary(self):
- balance = 0
- for trip in self.trips:
- if trip > 100:
- long_distance = trip - 100
- to_pay = self.rate_per_km * long_distance * 1.5 + self.rate_per_km * 100
- else:
- to_pay = self.rate_per_km * trip
- balance += to_pay
- self.trips = []
- return balance
- driver = Driver2('Anna', 'Kowalska', 2.0)
- driver.register_trip(80)
- print(driver.pay_salary())
- # 160.0
- print(driver.pay_salary())
- # 0.0
- driver.register_trip(150)
- print(driver.pay_salary())
- # 350
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement