Files
42-Piscine_Python/03/ex6/ft_analytics_dashboard.py
2026-02-08 22:08:13 +01:00

367 lines
11 KiB
Python

def list_comprehension_example(
data: dict[str, dict[str, int | str] | list[dict[str, str | int | bool]]],
) -> None:
print("=== List Comprehension Examples ===")
high_score = [
x for x in data["players"] if data["players"][x]["total_score"] > 2000
]
print(f"High scorers (>2000): {high_score}")
scores_doubled = [
data["players"][x]["total_score"] * 2 for x in data["players"]
]
print(f"Scores doubled: {scores_doubled}")
active_players = [
x
for x in data["players"]
if data["players"][x]["sessions_played"] > 29
]
print(f"Active players: {active_players}")
def dict_comprehension_example(
data: dict[str, dict[str, int | str] | list[dict[str, str | int | bool]]],
) -> None:
print("=== Dict Comprehension Examples ===")
player_scores = {
player: data["players"][player]["total_score"]
for player in data["players"]
}
print(f"Player scores: {player_scores}")
score_categories = {category["mode"]: 1 for category in data["sessions"]}
print(f"Score categories: {score_categories}")
achievements_count = {
player: data["players"][player]["achievements_count"]
for player in data["players"]
}
print(f"Achievement counts: {achievements_count}")
def set_comprehension_example(
data: dict[str, dict[str, int | str] | list[dict[str, str | int | bool]]],
) -> None:
print("=== Set Comprehension Examples ===")
unique_player: set[str] = {
session["player"] for session in data["sessions"]
}
print(f"Unique player: {unique_player}")
unique_achievements: set[str] = {
achievement for achievement in data["achievements"]
}
print(f"unique achievements: {unique_achievements}")
available_gamemode: set[str] = {gm for gm in data["game_modes"]}
print(f"Available gamemode: {available_gamemode}")
def combined_analysis(
data: dict[str, dict[str, int | str] | list[dict[str, str | int | bool]]],
) -> None:
print("=== combined Analysis ===")
unique_player: set[str] = {
session["player"] for session in data["sessions"]
}
print(f"Total player: {len(unique_player)}")
unique_achievements: set[str] = {
achievement for achievement in data["achievements"]
}
print(f"Total unique achievements: {len(unique_achievements)}")
total_score: list[int] = [session["score"] for session in data["sessions"]]
avg_score = sum(total_score) / len(total_score)
print(f"Average score: {avg_score:.2f}")
performers = {
player: data["players"][player]["total_score"]
for player in data["players"]
}
best_player = max(performers, key=performers.get)
print(f"Top performer: {best_player}\
({data['players'][best_player]['total_score']}\
points, {data['players'][best_player]['achievements_count']} achievements)")
def comprehension_tester(
data: dict[str, dict[str, int | str] | list[dict[str, str | int | bool]]],
) -> None:
try:
print("=== game Analytics Dashboard ===\n")
list_comprehension_example(data)
print()
dict_comprehension_example(data)
print()
set_comprehension_example(data)
print()
combined_analysis(data)
except Exception as err:
print(err)
if __name__ == "__main__":
data = {
"players": {
"alice": {
"level": 41,
"total_score": 2824,
"sessions_played": 13,
"favorite_mode": "ranked",
"achievements_count": 5,
},
"bob": {
"level": 16,
"total_score": 4657,
"sessions_played": 27,
"favorite_mode": "ranked",
"achievements_count": 2,
},
"charlie": {
"level": 44,
"total_score": 9935,
"sessions_played": 21,
"favorite_mode": "ranked",
"achievements_count": 7,
},
"diana": {
"level": 3,
"total_score": 1488,
"sessions_played": 21,
"favorite_mode": "casual",
"achievements_count": 4,
},
"eve": {
"level": 33,
"total_score": 1434,
"sessions_played": 81,
"favorite_mode": "casual",
"achievements_count": 7,
},
"frank": {
"level": 15,
"total_score": 8359,
"sessions_played": 85,
"favorite_mode": "competitive",
"achievements_count": 1,
},
},
"sessions": [
{
"player": "bob",
"duration_minutes": 94,
"score": 1831,
"mode": "competitive",
"completed": False,
},
{
"player": "bob",
"duration_minutes": 32,
"score": 1478,
"mode": "casual",
"completed": True,
},
{
"player": "diana",
"duration_minutes": 17,
"score": 1570,
"mode": "competitive",
"completed": False,
},
{
"player": "alice",
"duration_minutes": 98,
"score": 1981,
"mode": "ranked",
"completed": True,
},
{
"player": "diana",
"duration_minutes": 15,
"score": 2361,
"mode": "competitive",
"completed": False,
},
{
"player": "eve",
"duration_minutes": 29,
"score": 2985,
"mode": "casual",
"completed": True,
},
{
"player": "frank",
"duration_minutes": 34,
"score": 1285,
"mode": "casual",
"completed": True,
},
{
"player": "alice",
"duration_minutes": 53,
"score": 1238,
"mode": "competitive",
"completed": False,
},
{
"player": "bob",
"duration_minutes": 52,
"score": 1555,
"mode": "casual",
"completed": False,
},
{
"player": "frank",
"duration_minutes": 92,
"score": 2754,
"mode": "casual",
"completed": True,
},
{
"player": "eve",
"duration_minutes": 98,
"score": 1102,
"mode": "casual",
"completed": False,
},
{
"player": "diana",
"duration_minutes": 39,
"score": 2721,
"mode": "ranked",
"completed": True,
},
{
"player": "frank",
"duration_minutes": 46,
"score": 329,
"mode": "casual",
"completed": True,
},
{
"player": "charlie",
"duration_minutes": 56,
"score": 1196,
"mode": "casual",
"completed": True,
},
{
"player": "eve",
"duration_minutes": 117,
"score": 1388,
"mode": "casual",
"completed": False,
},
{
"player": "diana",
"duration_minutes": 118,
"score": 2733,
"mode": "competitive",
"completed": True,
},
{
"player": "charlie",
"duration_minutes": 22,
"score": 1110,
"mode": "ranked",
"completed": False,
},
{
"player": "frank",
"duration_minutes": 79,
"score": 1854,
"mode": "ranked",
"completed": False,
},
{
"player": "charlie",
"duration_minutes": 33,
"score": 666,
"mode": "ranked",
"completed": False,
},
{
"player": "alice",
"duration_minutes": 101,
"score": 292,
"mode": "casual",
"completed": True,
},
{
"player": "frank",
"duration_minutes": 25,
"score": 2887,
"mode": "competitive",
"completed": True,
},
{
"player": "diana",
"duration_minutes": 53,
"score": 2540,
"mode": "competitive",
"completed": False,
},
{
"player": "eve",
"duration_minutes": 115,
"score": 147,
"mode": "ranked",
"completed": True,
},
{
"player": "frank",
"duration_minutes": 118,
"score": 2299,
"mode": "competitive",
"completed": False,
},
{
"player": "alice",
"duration_minutes": 42,
"score": 1880,
"mode": "casual",
"completed": False,
},
{
"player": "alice",
"duration_minutes": 97,
"score": 1178,
"mode": "ranked",
"completed": True,
},
{
"player": "eve",
"duration_minutes": 18,
"score": 2661,
"mode": "competitive",
"completed": True,
},
{
"player": "bob",
"duration_minutes": 52,
"score": 761,
"mode": "ranked",
"completed": True,
},
{
"player": "eve",
"duration_minutes": 46,
"score": 2101,
"mode": "casual",
"completed": True,
},
{
"player": "charlie",
"duration_minutes": 117,
"score": 1359,
"mode": "casual",
"completed": True,
},
],
"game_modes": ["casual", "competitive", "ranked"],
"achievements": [
"first_blood",
"level_master",
"speed_runner",
"treasure_seeker",
"boss_hunter",
"pixel_perfect",
"combo_king",
"explorer",
],
}
comprehension_tester(data)