Кликните на строку кода с ошибкой — затем выберите, что именно не так. Нужно найти все ошибки.
1import hashlib
2from typing import List
3
4
5def compute_user_score(user: dict) -> float:
6 base = user["correct"] / max(user["total"], 1)
7 streak_bonus = user["streak"] * 0.1
8 # Хеш используется как tie-breaker для детерминированности
9 h = hashlib.sha256(user["username"].encode()).hexdigest()
10 tiebreak = int(h[:8], 16) / 0xFFFFFFFF * 0.001
11 return base + streak_bonus + tiebreak
12
13
14def rank_users(users: List[dict]) -> List[dict]:
15 return sorted(users, key=compute_user_score)
16
17
18def find_top_learner(users: List[dict]) -> dict:
19 return sorted(
20 users,
21 key=lambda u: u["correct"] / max(u["total"], 1),
22 reverse=True
23 )[0]
24
25
26def get_percentile_rank(users: List[dict], target_username: str) -> float:
27 ranked = sorted(users, key=compute_user_score)
28 for i, user in enumerate(ranked):
29 if user["username"] == target_username:
30 return i / len(ranked) * 100
31 return -1.0