From 1e0d7736f69d7ea8f38c6b3a3ae7bb8c43f1474c Mon Sep 17 00:00:00 2001 From: rediklayer Date: Sun, 26 Jan 2025 00:35:06 +0300 Subject: [PATCH 1/2] test solution sent via git bash --- app/main.py | 21 ++++++++++++++++++++- app/players/dwarves/dwarf.py | 10 ++++++++++ app/players/dwarves/dwarf_blacksmith.py | 16 ++++++++++++++++ app/players/dwarves/dwarf_warrior.py | 17 +++++++++++++++++ app/players/elves/druid.py | 17 +++++++++++++++++ app/players/elves/elf.py | 11 +++++++++++ app/players/elves/elf_ranger.py | 16 ++++++++++++++++ app/players/player.py | 14 ++++++++++++++ 8 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 app/players/dwarves/dwarf.py create mode 100644 app/players/dwarves/dwarf_blacksmith.py create mode 100644 app/players/dwarves/dwarf_warrior.py create mode 100644 app/players/elves/druid.py create mode 100644 app/players/elves/elf.py create mode 100644 app/players/elves/elf_ranger.py create mode 100644 app/players/player.py diff --git a/app/main.py b/app/main.py index fa56336e1..689fb8db2 100644 --- a/app/main.py +++ b/app/main.py @@ -1 +1,20 @@ -# write your code here +from typing import List +from app.players.elves.elf_ranger import ElfRanger +from app.players.dwarves.dwarf_warrior import DwarfWarrior + + +def calculate_team_total_rating(players: List[object]) -> int: + total_rating = 0 + for player in players: + total_rating += player.get_rating() + return total_rating + + +def elves_concert(elves: List[ElfRanger]) -> None: + for elf in elves: + elf.play_elf_song() + + +def feast_of_the_dwarves(dwarves: List[DwarfWarrior]) -> None: + for dwarf in dwarves: + dwarf.eat_favourite_dish() diff --git a/app/players/dwarves/dwarf.py b/app/players/dwarves/dwarf.py new file mode 100644 index 000000000..a4cc61927 --- /dev/null +++ b/app/players/dwarves/dwarf.py @@ -0,0 +1,10 @@ +from app.players.player import Player + + +class Dwarf(Player): + def __init__(self, nickname: str, favourite_dish: str) -> None: + super().__init__(nickname) + self._favourite_dish = favourite_dish + + def eat_favourite_dish(self) -> None: + print(f"{self.nickname} is eating {self._favourite_dish}") diff --git a/app/players/dwarves/dwarf_blacksmith.py b/app/players/dwarves/dwarf_blacksmith.py new file mode 100644 index 000000000..63e762810 --- /dev/null +++ b/app/players/dwarves/dwarf_blacksmith.py @@ -0,0 +1,16 @@ +from app.players.dwarves.dwarf import Dwarf + + +class DwarfBlacksmith(Dwarf): + def __init__(self, nickname: str, + favourite_dish: str, + skill_level: int) -> None: + super().__init__(nickname, favourite_dish) + self._skill_level = skill_level + + def get_rating(self) -> int: + return self._skill_level + + def player_info(self) -> str: + return (f"Dwarf blacksmith {self.nickname} " + f"with skill of the {self._skill_level} level") diff --git a/app/players/dwarves/dwarf_warrior.py b/app/players/dwarves/dwarf_warrior.py new file mode 100644 index 000000000..2ae78dc1f --- /dev/null +++ b/app/players/dwarves/dwarf_warrior.py @@ -0,0 +1,17 @@ +from app.players.dwarves.dwarf import Dwarf + + +class DwarfWarrior(Dwarf): + def __init__(self, nickname: str, + favourite_dish: str, + hummer_level: int) -> None: + super().__init__(nickname, favourite_dish) + self._hummer_level = hummer_level + + def get_rating(self) -> int: + return self._hummer_level + 4 + + def player_info(self) -> str: + return (f"Dwarf warrior {self.nickname}. " + f"{self.nickname} has a hummer of " + f"the {self._hummer_level} level") diff --git a/app/players/elves/druid.py b/app/players/elves/druid.py new file mode 100644 index 000000000..0541dae01 --- /dev/null +++ b/app/players/elves/druid.py @@ -0,0 +1,17 @@ +from app.players.elves.elf import Elf + + +class Druid(Elf): + def __init__(self, nickname: str, + musical_instrument: str, + favourite_spell: str) -> None: + super().__init__(nickname, musical_instrument) + self._favourite_spell = favourite_spell + + def get_rating(self) -> int: + return len(self._favourite_spell) + + def player_info(self) -> str: + return (f"Druid {self.nickname}. " + f"{self.nickname} has a favourite spell: " + f"{self._favourite_spell}") diff --git a/app/players/elves/elf.py b/app/players/elves/elf.py new file mode 100644 index 000000000..34dfd6e92 --- /dev/null +++ b/app/players/elves/elf.py @@ -0,0 +1,11 @@ +from app.players.player import Player + + +class Elf(Player): + def __init__(self, nickname: str, musical_instrument: str) -> None: + super().__init__(nickname) + self._musical_instrument = musical_instrument + + def play_elf_song(self) -> None: + print(f"{self.nickname} is playing a song on the " + f"{self._musical_instrument}") diff --git a/app/players/elves/elf_ranger.py b/app/players/elves/elf_ranger.py new file mode 100644 index 000000000..1cf54f6d0 --- /dev/null +++ b/app/players/elves/elf_ranger.py @@ -0,0 +1,16 @@ +from app.players.elves.elf import Elf + + +class ElfRanger(Elf): + def __init__(self, nickname: str, + musical_instrument: str, + bow_level: int) -> None: + super().__init__(nickname, musical_instrument) + self._bow_level = bow_level + + def get_rating(self) -> int: + return 3 * self._bow_level + + def player_info(self) -> str: + return (f"Elf ranger {self.nickname}. " + f"{self.nickname} has bow of the {self._bow_level} level") diff --git a/app/players/player.py b/app/players/player.py new file mode 100644 index 000000000..deb4232ae --- /dev/null +++ b/app/players/player.py @@ -0,0 +1,14 @@ +from abc import ABC, abstractmethod + + +class Player(ABC): + def __init__(self, nickname: str) -> None: + self.nickname = nickname + + @abstractmethod + def get_rating(self) -> int: + pass + + @abstractmethod + def player_info(self) -> str: + pass From 223892c62fc6b249060fb1ebe15f7f35228f4436 Mon Sep 17 00:00:00 2001 From: rediklayer Date: Sun, 26 Jan 2025 00:51:26 +0300 Subject: [PATCH 2/2] comments import fixes --- app/main.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/main.py b/app/main.py index 689fb8db2..fff5c5d1b 100644 --- a/app/main.py +++ b/app/main.py @@ -1,20 +1,21 @@ from typing import List -from app.players.elves.elf_ranger import ElfRanger -from app.players.dwarves.dwarf_warrior import DwarfWarrior +from app.players.elves.elf import Elf +from app.players.dwarves.dwarf import Dwarf +from app.players.player import Player -def calculate_team_total_rating(players: List[object]) -> int: +def calculate_team_total_rating(players: List[Player]) -> int: total_rating = 0 for player in players: total_rating += player.get_rating() return total_rating -def elves_concert(elves: List[ElfRanger]) -> None: +def elves_concert(elves: List[Elf]) -> None: for elf in elves: elf.play_elf_song() -def feast_of_the_dwarves(dwarves: List[DwarfWarrior]) -> None: +def feast_of_the_dwarves(dwarves: List[Dwarf]) -> None: for dwarf in dwarves: dwarf.eat_favourite_dish()