From 8961c05e07d714d1da9dd64468680b9ce9ca5bba Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 19:47:41 +0200 Subject: [PATCH 1/7] Solution --- app/main.py | 23 ++++++++++++++++++++++- app/players/dwarves/dwarf.py | 10 ++++++++++ app/players/dwarves/dwarf_blacksmith.py | 13 +++++++++++++ app/players/dwarves/dwarf_warrior.py | 14 ++++++++++++++ app/players/elves/druid.py | 14 ++++++++++++++ app/players/elves/elf.py | 10 ++++++++++ app/players/elves/elf_ranger.py | 14 ++++++++++++++ app/players/player.py | 14 ++++++++++++++ 8 files changed, 111 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..3eb535416 100644 --- a/app/main.py +++ b/app/main.py @@ -1 +1,22 @@ -# write your code here +from players.player import Player +from players.elves.elf import Elf +from players.dwarves.dwarf import Dwarf +from players.dwarves.dwarf_blacksmith import DwarfBlacksmith +from players.dwarves.dwarf_warrior import DwarfWarrior +from players.elves.druid import Druid +from players.elves.elf_ranger import ElfRanger + + + +def calculate_team_total_rating(team: list[Player]) -> int: + return sum(player.get_rating for player in team) + + +def elves_concert(elves: list[Elf]) -> None: + for elf in elves: + elf.play_elf_song() + + +def feast_of_the_dwarves(dwarves: list[Dwarf]) -> 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..d08b69f42 --- /dev/null +++ b/app/players/dwarves/dwarf.py @@ -0,0 +1,10 @@ +from 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..5f16a6df2 --- /dev/null +++ b/app/players/dwarves/dwarf_blacksmith.py @@ -0,0 +1,13 @@ +from 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 player_info(self) -> str: + return f"Dwarf blacksmith {self.nickname} with skill of the {self.skill_level} level" + + def get_rating(self) -> int: + return self.skill_level diff --git a/app/players/dwarves/dwarf_warrior.py b/app/players/dwarves/dwarf_warrior.py new file mode 100644 index 000000000..b7ab6c088 --- /dev/null +++ b/app/players/dwarves/dwarf_warrior.py @@ -0,0 +1,14 @@ +from 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 player_info(self) -> str: + return (f"Dwarf warrior {self.nickname}. " + f"{self.nickname} has a hummer of the {self.hummer_level} level") + + def get_rating(self) -> int: + return self.hummer_level + 4 diff --git a/app/players/elves/druid.py b/app/players/elves/druid.py new file mode 100644 index 000000000..ee16ca3e4 --- /dev/null +++ b/app/players/elves/druid.py @@ -0,0 +1,14 @@ +from 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 player_info(self) -> str: + return (f"Druid {self.nickname}. " + f"{self.nickname} has a favourite spell: {self.favourite_spell}") + + def get_rating(self) -> int: + return len(self.favourite_spell) diff --git a/app/players/elves/elf.py b/app/players/elves/elf.py new file mode 100644 index 000000000..41ef37176 --- /dev/null +++ b/app/players/elves/elf.py @@ -0,0 +1,10 @@ +from 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 {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..45409b587 --- /dev/null +++ b/app/players/elves/elf_ranger.py @@ -0,0 +1,14 @@ +from 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 player_info(self) -> str: + return (f"Elf ranger {self.nickname}. " + f"{self.nickname} has bow of the {self.bow_level} level") + + def get_rating(self) -> int: + return 3 * self.bow_level diff --git a/app/players/player.py b/app/players/player.py new file mode 100644 index 000000000..370fab52d --- /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) -> None: + pass + + @abstractmethod + def player_info(self) -> None: + pass From f764610e1571028a4cf1df0865001ad732d92ab3 Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 20:26:08 +0200 Subject: [PATCH 2/7] Solution --- app/main.py | 9 ++++----- app/players/dwarves/dwarf_blacksmith.py | 7 +++++-- app/players/dwarves/dwarf_warrior.py | 4 +++- app/players/elves/druid.py | 7 +++++-- app/players/elves/elf.py | 6 ++++-- app/players/elves/elf_ranger.py | 7 +++++-- 6 files changed, 26 insertions(+), 14 deletions(-) diff --git a/app/main.py b/app/main.py index 3eb535416..692f1f6e2 100644 --- a/app/main.py +++ b/app/main.py @@ -1,11 +1,10 @@ from players.player import Player from players.elves.elf import Elf from players.dwarves.dwarf import Dwarf -from players.dwarves.dwarf_blacksmith import DwarfBlacksmith -from players.dwarves.dwarf_warrior import DwarfWarrior -from players.elves.druid import Druid -from players.elves.elf_ranger import ElfRanger - +# from players.dwarves.dwarf_blacksmith import DwarfBlacksmith +# from players.dwarves.dwarf_warrior import DwarfWarrior +# from players.elves.druid import Druid +# from players.elves.elf_ranger import ElfRanger def calculate_team_total_rating(team: list[Player]) -> int: diff --git a/app/players/dwarves/dwarf_blacksmith.py b/app/players/dwarves/dwarf_blacksmith.py index 5f16a6df2..a15f37f1e 100644 --- a/app/players/dwarves/dwarf_blacksmith.py +++ b/app/players/dwarves/dwarf_blacksmith.py @@ -2,12 +2,15 @@ class DwarfBlacksmith(Dwarf): - def __init__(self, nickname: str, favourite_dish: str, skill_level: int) -> None: + def __init__(self, nickname: str, + favourite_dish: str, + skill_level: int) -> None: super().__init__(nickname, favourite_dish) self.skill_level = skill_level def player_info(self) -> str: - return f"Dwarf blacksmith {self.nickname} with skill of the {self.skill_level} level" + return (f"Dwarf blacksmith {self.nickname}" + f" with skill of the {self.skill_level} level") def get_rating(self) -> int: return self.skill_level diff --git a/app/players/dwarves/dwarf_warrior.py b/app/players/dwarves/dwarf_warrior.py index b7ab6c088..ed08143b6 100644 --- a/app/players/dwarves/dwarf_warrior.py +++ b/app/players/dwarves/dwarf_warrior.py @@ -2,7 +2,9 @@ class DwarfWarrior(Dwarf): - def __init__(self, nickname: str, favourite_dish: str, hummer_level: int) -> None: + def __init__(self, nickname: str, + favourite_dish: str, + hummer_level: int) -> None: super().__init__(nickname, favourite_dish) self.hummer_level = hummer_level diff --git a/app/players/elves/druid.py b/app/players/elves/druid.py index ee16ca3e4..d5479a7ee 100644 --- a/app/players/elves/druid.py +++ b/app/players/elves/druid.py @@ -2,13 +2,16 @@ class Druid(Elf): - def __init__(self, nickname: str, musical_instrument: str, favourite_spell: str) -> None: + def __init__(self, nickname: str, + musical_instrument: str, + favourite_spell: str) -> None: super().__init__(nickname, musical_instrument) self.favourite_spell = favourite_spell def player_info(self) -> str: return (f"Druid {self.nickname}. " - f"{self.nickname} has a favourite spell: {self.favourite_spell}") + f"{self.nickname} has" + f" a favourite spell: {self.favourite_spell}") def get_rating(self) -> int: return len(self.favourite_spell) diff --git a/app/players/elves/elf.py b/app/players/elves/elf.py index 41ef37176..af11ae859 100644 --- a/app/players/elves/elf.py +++ b/app/players/elves/elf.py @@ -2,9 +2,11 @@ class Elf(Player): - def __init__(self, nickname: str, musical_instrument: str) -> None: + 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 {self.musical_instrument}") + print(f"{self.nickname} is playing" + f" a song on the {self.musical_instrument}") diff --git a/app/players/elves/elf_ranger.py b/app/players/elves/elf_ranger.py index 45409b587..d64088f89 100644 --- a/app/players/elves/elf_ranger.py +++ b/app/players/elves/elf_ranger.py @@ -2,13 +2,16 @@ class ElfRanger(Elf): - def __init__(self, nickname: str, musical_instrument: str, bow_level: int) -> None: + def __init__(self, nickname: str, + musical_instrument: str, + bow_level: int) -> None: super().__init__(nickname, musical_instrument) self.bow_level = bow_level def player_info(self) -> str: return (f"Elf ranger {self.nickname}. " - f"{self.nickname} has bow of the {self.bow_level} level") + f"{self.nickname} has" + f" bow of the {self.bow_level} level") def get_rating(self) -> int: return 3 * self.bow_level From fd45644233ff8421759164718215934ce1e9baaf Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 20:27:10 +0200 Subject: [PATCH 3/7] Solution --- app/players/dwarves/dwarf_warrior.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/players/dwarves/dwarf_warrior.py b/app/players/dwarves/dwarf_warrior.py index ed08143b6..2590dee84 100644 --- a/app/players/dwarves/dwarf_warrior.py +++ b/app/players/dwarves/dwarf_warrior.py @@ -10,7 +10,8 @@ def __init__(self, nickname: str, def player_info(self) -> str: return (f"Dwarf warrior {self.nickname}. " - f"{self.nickname} has a hummer of the {self.hummer_level} level") + f"{self.nickname} has" + f" a hummer of the {self.hummer_level} level") def get_rating(self) -> int: return self.hummer_level + 4 From 409b0e46c7593952d2779e7ae005e829bd172221 Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 20:30:14 +0200 Subject: [PATCH 4/7] Solution --- app/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index 692f1f6e2..5c3513342 100644 --- a/app/main.py +++ b/app/main.py @@ -1,4 +1,4 @@ -from players.player import Player +from app.players.player import Player from players.elves.elf import Elf from players.dwarves.dwarf import Dwarf # from players.dwarves.dwarf_blacksmith import DwarfBlacksmith From 0187bf8f42f0c3cf9bb5028ef699ce5c8c729145 Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 20:31:48 +0200 Subject: [PATCH 5/7] Solution --- app/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/main.py b/app/main.py index 5c3513342..82690f63e 100644 --- a/app/main.py +++ b/app/main.py @@ -1,6 +1,6 @@ from app.players.player import Player -from players.elves.elf import Elf -from players.dwarves.dwarf import Dwarf +from app.players.elves.elf import Elf +from app.players.dwarves.dwarf import Dwarf # from players.dwarves.dwarf_blacksmith import DwarfBlacksmith # from players.dwarves.dwarf_warrior import DwarfWarrior # from players.elves.druid import Druid From be62394cdee067878ff30aa12dd44fdde1a8b5c6 Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 20:34:36 +0200 Subject: [PATCH 6/7] Solution --- app/players/dwarves/dwarf.py | 2 +- app/players/dwarves/dwarf_blacksmith.py | 2 +- app/players/dwarves/dwarf_warrior.py | 2 +- app/players/elves/druid.py | 2 +- app/players/elves/elf.py | 2 +- app/players/elves/elf_ranger.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/players/dwarves/dwarf.py b/app/players/dwarves/dwarf.py index d08b69f42..598477126 100644 --- a/app/players/dwarves/dwarf.py +++ b/app/players/dwarves/dwarf.py @@ -1,4 +1,4 @@ -from players.player import Player +from app.players.player import Player class Dwarf(Player): diff --git a/app/players/dwarves/dwarf_blacksmith.py b/app/players/dwarves/dwarf_blacksmith.py index a15f37f1e..d205737b1 100644 --- a/app/players/dwarves/dwarf_blacksmith.py +++ b/app/players/dwarves/dwarf_blacksmith.py @@ -1,4 +1,4 @@ -from players.dwarves.dwarf import Dwarf +from app.players.dwarves.dwarf import Dwarf class DwarfBlacksmith(Dwarf): diff --git a/app/players/dwarves/dwarf_warrior.py b/app/players/dwarves/dwarf_warrior.py index 2590dee84..24db892db 100644 --- a/app/players/dwarves/dwarf_warrior.py +++ b/app/players/dwarves/dwarf_warrior.py @@ -1,4 +1,4 @@ -from players.dwarves.dwarf import Dwarf +from app.players.dwarves.dwarf import Dwarf class DwarfWarrior(Dwarf): diff --git a/app/players/elves/druid.py b/app/players/elves/druid.py index d5479a7ee..7a0f47e2b 100644 --- a/app/players/elves/druid.py +++ b/app/players/elves/druid.py @@ -1,4 +1,4 @@ -from players.elves.elf import Elf +from app.players.elves.elf import Elf class Druid(Elf): diff --git a/app/players/elves/elf.py b/app/players/elves/elf.py index af11ae859..316dfd3ee 100644 --- a/app/players/elves/elf.py +++ b/app/players/elves/elf.py @@ -1,4 +1,4 @@ -from players.player import Player +from app.players.player import Player class Elf(Player): diff --git a/app/players/elves/elf_ranger.py b/app/players/elves/elf_ranger.py index d64088f89..c2b426a0b 100644 --- a/app/players/elves/elf_ranger.py +++ b/app/players/elves/elf_ranger.py @@ -1,4 +1,4 @@ -from players.elves.elf import Elf +from app.players.elves.elf import Elf class ElfRanger(Elf): From 2bd2e20d7cf3cf6d9d80aa3d991da05b94bd4d38 Mon Sep 17 00:00:00 2001 From: Mykyta Date: Wed, 22 Jan 2025 20:38:32 +0200 Subject: [PATCH 7/7] Solution --- app/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index 82690f63e..c3fc8c555 100644 --- a/app/main.py +++ b/app/main.py @@ -8,7 +8,7 @@ def calculate_team_total_rating(team: list[Player]) -> int: - return sum(player.get_rating for player in team) + return sum(player.get_rating() for player in team) def elves_concert(elves: list[Elf]) -> None: