From 7e3ca26e975a99bf65a556a3c9a19225f2e2329e Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Mon, 2 Feb 2026 12:24:35 +0100 Subject: [PATCH] Improved ex3 --- 03/ex1/ft_score_analytics.py | 9 +------- 03/ex2/ft_coordinate_system.py | 17 ++-------------- 03/ex3/ft_achievement_tracker.py | 35 ++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 03/ex3/ft_achievement_tracker.py diff --git a/03/ex1/ft_score_analytics.py b/03/ex1/ft_score_analytics.py index db4f237..e8d37f6 100644 --- a/03/ex1/ft_score_analytics.py +++ b/03/ex1/ft_score_analytics.py @@ -11,14 +11,7 @@ if __name__ == "__main__": while i < len(args) - 1: scores[i] = int(args[i + 1]) i = i + 1 - print("Scores processed: [", end="") - i = 0 - while i < len(scores): - print(scores[i], end="") - if not i == len(scores) - 1: - print(", ", end="") - i = i + 1 - print("]") + print("Scores processed:", scores) print("Total players:", len(scores)) print("Total score:", sum(scores)) print("Average score:", sum(scores) / len(scores)) diff --git a/03/ex2/ft_coordinate_system.py b/03/ex2/ft_coordinate_system.py index 95342d2..8014c1a 100644 --- a/03/ex2/ft_coordinate_system.py +++ b/03/ex2/ft_coordinate_system.py @@ -4,19 +4,7 @@ import sys def print_distance(a: tuple[int, int, int], b: tuple[int, int, int]) -> None: distance = math.sqrt((a[0]-b[0])**2+(a[1]-b[1])**2+(a[2]-b[2])**2) - print("Distance between (", end="") - print(a[0], end="") - print(", ", end="") - print(a[1], end="") - print(", ", end="") - print(a[2], end="") - print(") and (", end="") - print(b[0], end="") - print(", ", end="") - print(b[1], end="") - print(", ", end="") - print(b[2], end="") - print("):", distance) + print(f"Distance between: {a} and {b}: {distance}") if __name__ == "__main__": @@ -32,8 +20,7 @@ if __name__ == "__main__": print("Parsing coordinates:", args[1]) print_distance((0, 0, 0), int_args) except ValueError as err: - print("Parsing invalid coordinates: \"", end="") - print(argv[1], end="\"\n") + print(f"Parsing invalid coordinates: \"{argv[1]}\"") print(err) except Exception as err: print(err) diff --git a/03/ex3/ft_achievement_tracker.py b/03/ex3/ft_achievement_tracker.py new file mode 100644 index 0000000..2257fcf --- /dev/null +++ b/03/ex3/ft_achievement_tracker.py @@ -0,0 +1,35 @@ +class Player: + __name: str + __achievements: set[str] + + def __init__(self, name:str, achievements: set[str]) -> None: + self.__name = name + self.__achievements = achievements + + def get_name(self) -> str: + return self.__name + + def get_achievements(self) -> set[str]: + return self.__achievements + + +if __name__ == "__main__": + players = [ + Player("Alice", set(('first_kill', 'level_10', 'treasure_hunter', 'speed_demon'))), + Player("Bob",set(('first_kill', 'level_10', 'boss_slayer', 'collector'))), + Player("Charlie", set(('level_10', 'treasure_hunter', 'boss_slayer', 'speed_demon', 'perfectionist'))) + ] + print("=== Achievement Tracker System ===\n") + for n in players: + print(f"Player {n.get_name()} achievements: {n.get_achievements()}") + print("\n=== Achievement Analytics ===") + unique_achievements = players[0].get_achievements() | players[1].get_achievements() | players[2].get_achievements() + print(f"All unique achievements: {unique_achievements}") + print(f"Total unique achievements: {len(unique_achievements)}") + common_achievements = players[0].get_achievements() & players[1].get_achievements() & players[2].get_achievements() + print(f"\nCommon to all players: {common_achievements}") + p0_achievements = players[0].get_achievements() - players[1].get_achievements() - players[2].get_achievements() + p1_achievements = players[0].get_achievements() - players[1].get_achievements() - players[2].get_achievements() + p2_achievements = players[0].get_achievements() - players[1].get_achievements() - players[2].get_achievements() + print(f"Rare achievements (1 player): {rare_achievements}") +