From 7aebb185650104800ef843327ff7f00127cc0de9 Mon Sep 17 00:00:00 2001 From: Vlad Hurko Date: Wed, 13 Nov 2024 20:53:47 +0000 Subject: [PATCH] Solution --- app/main.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/app/main.py b/app/main.py index b2d096bd..72ef00a6 100644 --- a/app/main.py +++ b/app/main.py @@ -1,8 +1,62 @@ class Car: - # write your code here - pass + def __init__( + self, + comfort_class: int, + clean_mark: int, + brand: str + ) -> None: + + self.comfort_class = comfort_class + self.clean_mark = clean_mark + self.brand = brand class CarWashStation: - # write your code here - pass + def __init__( + self, + distance_from_city_center: float, + clean_power: int, + average_rating: float, + count_of_ratings: int, + ) -> None: + + self.distance_from_city_center = distance_from_city_center + self.clean_power = clean_power + self.average_rating = average_rating + self.count_of_ratings = count_of_ratings + + def serve_cars(self, cars: list) -> float: + + price = 0.0 + + for car in cars: + + if car.clean_mark < self.clean_power: + + car_income = self.calculate_washing_price(car) + price += car_income + car.clean_mark = self.wash_single_car() + + return round(price, 1) + + def calculate_washing_price(self, car: Car) -> float: + + clean_diff = self.clean_power - car.clean_mark + car_income = ( + car.comfort_class * clean_diff * self.average_rating + ) / self.distance_from_city_center + return round(car_income, 1) + + def wash_single_car(self) -> int: + + return self.clean_power + + def rate_service(self, single_rate: float) -> None: + + new_rating = round( + (self.average_rating * self.count_of_ratings + single_rate) + / (self.count_of_ratings + 1), + 1, + ) + self.count_of_ratings += 1 + self.average_rating = new_rating