diff --git a/app/main.py b/app/main.py index b2d096bd..03520589 100644 --- a/app/main.py +++ b/app/main.py @@ -1,8 +1,54 @@ +from typing import List + + 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[Car]) -> float: + income = 0.0 + for car in cars: + if car.clean_mark < self.clean_power: + wash_cost = self.calculate_washing_price(car) + income += wash_cost + self.wash_single_car(car) + return round(income, 1) + + def calculate_washing_price(self, car: Car) -> float: + return round( + (car.comfort_class * (self.clean_power - car.clean_mark) + * self.average_rating) / self.distance_from_city_center, + 1 + ) + + def wash_single_car(self, car: Car) -> None: + if car.clean_mark < self.clean_power: + car.clean_mark = self.clean_power + + def rate_service(self, new_rating: int) -> None: + total_rating = self.average_rating * self.count_of_ratings + total_rating = ( + total_rating + + new_rating + ) + self.count_of_ratings += 1 + self.average_rating = round( + total_rating / self.count_of_ratings, 1 + )