/
maksud31
/
IT_TOP_PRACTICA
Обзор
Документация
Войти
/
maksud31
/
IT_TOP_PRACTICA
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/statistics.py
57 строк
2 KB
maksud31
загрузка тестирования проекта
25 дек 2025, 14:24
25 дек 2025, 14:24
0305b8c
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Модуль для работы со статистикой. """ from typing import List, Dict, Optional from file_manager import FileManager class StatisticsManager: """Класс для управления статистикой игроков.""" def __init__(self, file_manager: FileManager): self.file_manager = file_manager def get_player_statistics(self, player_name: str) -> Dict: stats = self.file_manager.get_player_stats(player_name) if not stats: return { 'name': player_name, 'total_games': 0, 'wins': 0, 'losses': 0, 'win_rate': 0.0, 'best_time': None, 'guessed_words': [], 'last_game': None } total = stats['total_games'] wins = stats['wins'] win_rate = round((wins / total * 100), 2) if total > 0 else 0.0 best_time_str = None if stats['best_time'] is not None: minutes = stats['best_time'] // 60 seconds = stats['best_time'] % 60 best_time_str = f"{minutes:02d}:{seconds:02d}" last_game = None if stats.get('game_history'): last_game = stats['game_history'][-1] return { 'name': player_name, 'total_games': total, 'wins': wins, 'losses': stats.get('losses', 0), 'win_rate': win_rate, 'best_time': best_time_str, 'guessed_words': stats.get('guessed_words', [])[:10], 'last_game': last_game } def get_leaderboard(self, sort_by: str = 'wins') -> List[Dict]: return self.file_manager.get_leaderboard(sort_by)