Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### formula_team.py
- from abc import ABC
- class FormulaTeam(ABC):
- def __init__(self, budget, place_prices, expenses):
- self.budget = budget
- self.place_price = place_prices
- self.expenses = expenses
- @property
- def budget(self):
- return self.__budget
- @budget.setter
- def budget(self, value):
- if value < 1_000_000:
- raise ValueError("F1 is an expensive sport, find more sponsors!")
- self.__budget = value
- def calculate_revenue_after_race(self, race_pos: int):
- earned_money = 0
- for sponsor in self.place_price.keys():
- for place in self.place_price[sponsor]:
- if race_pos <= place:
- earned_money += self.place_price[sponsor][place]
- break
- revenue = earned_money - self.expenses
- self.budget += revenue
- return f"The revenue after the race is {revenue}$. Current budget {self.budget}$"
- ### red_bull_team.py
- from project.formula_teams.formula_team import FormulaTeam
- class RedBullTeam(FormulaTeam):
- PLACE_PRICES = {"ORACLE": {1: 1_500_000, 2: 800_000},
- "HONDA": {8: 20_000, 10: 10_000}}
- EXPENSES = 250_000
- def __init__(self, budget):
- super().__init__(budget, self.PLACE_PRICES, self.EXPENSES)
- ### mercedes_team.py
- from project.formula_teams.formula_team import FormulaTeam
- class MercedesTeam(FormulaTeam):
- PLACE_PRICES = {"Petronas": {1: 1_000_000, 2: 500_000},
- "TeamViewer": {5: 100_000, 7: 50_000}}
- EXPENSES = 200_000
- def __init__(self, budget):
- super().__init__(budget, self.PLACE_PRICES, self.EXPENSES)
- ### f1_season_app.py
- from project.formula_teams.mercedes_team import MercedesTeam
- from project.formula_teams.red_bull_team import RedBullTeam
- class F1SeasonApp:
- def __init__(self):
- self.red_bull_team = None
- self.mercedes_team = None
- def register_team_for_season(self, team_name: str, budget: int):
- if team_name == "Red Bull":
- self.red_bull_team = RedBullTeam(budget)
- elif team_name == "Mercedes":
- self.mercedes_team = MercedesTeam(budget)
- else:
- raise ValueError("Invalid team name!")
- return f"{team_name} has joined the new F1 season."
- def new_race_results(self, race_name: str, red_bull_pos: int, mercedes_pos: int):
- if not self.red_bull_team or not self.mercedes_team:
- raise Exception("Not all teams have registered for the season.")
- better_team = "Red Bull" if red_bull_pos < mercedes_pos else "Mercedes"
- return f"Red Bull: {self.red_bull_team.calculate_revenue_after_race(red_bull_pos)}. Mercedes: {self.mercedes_team.calculate_revenue_after_race(mercedes_pos)}." \
- f" {better_team} is ahead at the {race_name} race."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement