python案例统计球员评分最高者是谁?

wen python案例 2

本文目录导读:

python案例统计球员评分最高者是谁?

  1. 方法一:基础字典方式
  2. 方法二:列表字典组合
  3. 方法三:使用Pandas(数据分析库)
  4. 方法四:面向对象方式
  5. 方法五:完整统计系统
  6. 运行示例输出

我来给你写一个统计球员评分最高者的Python案例,包含几种不同实现方式:

基础字典方式

# 球员评分数据
player_scores = {
    '梅西': 9.8,
    'C罗': 9.2,
    '内马尔': 8.5,
    '姆巴佩': 9.5,
    '哈兰德': 8.9,
    '德布劳内': 9.7
}
# 方法1:使用max函数+字典
highest_player = max(player_scores, key=player_scores.get)
highest_score = player_scores[highest_player]
print(f"最高分球员: {highest_player}")
print(f"最高评分: {highest_score}")

列表字典组合

# 更复杂的球员数据
players = [
    {'name': '梅西', 'team': '巴萨', 'position': '前锋', 'scores': [9.5, 9.8, 9.3, 9.7, 9.6]},
    {'name': 'C罗', 'team': '尤文', 'position': '前锋', 'scores': [9.2, 9.4, 9.0, 9.3, 9.1]},
    {'name': '内马尔', 'team': '巴黎', 'position': '前锋', 'scores': [8.8, 9.1, 8.5, 9.0, 8.7]},
    {'name': '姆巴佩', 'team': '巴黎', 'position': '前锋', 'scores': [9.6, 9.8, 9.4, 9.7, 9.5]},
    {'name': '德布劳内', 'team': '曼城', 'position': '中场', 'scores': [9.7, 9.5, 9.6, 9.4, 9.8]}
]
# 计算每个球员的平均分
print("各球员平均评分:")
player_averages = {}
for player in players:
    avg_score = sum(player['scores']) / len(player['scores'])
    player_averages[player['name']] = avg_score
    print(f"{player['name']}: {avg_score:.2f}")
# 找出最高平均分球员
best_player = max(player_averages, key=player_averages.get)
print(f"\n🏆 平均评分最高球员: {best_player}")
print(f"最高平均评分: {player_averages[best_player]:.2f}")

使用Pandas(数据分析库)

import pandas as pd
# 创建DataFrame
data = {
    '球员': ['梅西', 'C罗', '内马尔', '姆巴佩', '哈兰德', '德布劳内'],
    '球队': ['巴黎', '利雅得', '巴黎', '巴黎', '曼城', '曼城'],
    '位置': ['前锋', '前锋', '前锋', '前锋', '前锋', '中场'],
    '评分': [9.8, 9.2, 8.5, 9.5, 8.9, 9.7],
    '进球数': [32, 28, 20, 27, 35, 15],
    '助攻数': [12, 8, 15, 9, 8, 20]
}
df = pd.DataFrame(data)
print("球员数据:")
print(df)
# 找出评分最高的球员
highest_scored = df.loc[df['评分'].idxmax()]
print("\n评分最高球员:")
print(highest_scored)
# 按球队分组查看平均评分
print("\n各球队平均评分:")
print(df.groupby('球队')['评分'].mean())

面向对象方式

class Player:
    def __init__(self, name, position, score):
        self.name = name
        self.position = position
        self.score = score
    def __str__(self):
        return f"{self.name}({self.position}): {self.score}分"
def find_highest_score_player(players):
    """找出评分最高的球员"""
    if not players:
        return None
    return max(players, key=lambda p: p.score)
# 创建球员对象
players = [
    Player("梅西", "前锋", 9.8),
    Player("C罗", "前锋", 9.2),
    Player("内马尔", "前锋", 8.5),
    Player("姆巴佩", "前锋", 9.5),
    Player("哈兰德", "前锋", 8.9),
    Player("德布劳内", "中场", 9.7),
    Player("范戴克", "后卫", 9.1),
    Player("诺伊尔", "门将", 9.0)
]
print("所有球员:")
for player in players:
    print(f"  {player}")
winner = find_highest_score_player(players)
if winner:
    print(f"\n🏆 评分最高球员是: {winner}")

完整统计系统

import json
from collections import defaultdict
class PlayerStats:
    def __init__(self):
        self.players = []
    def add_player(self, name, team, position, match_scores):
        """添加球员"""
        player = {
            'name': name,
            'team': team,
            'position': position,
            'scores': match_scores
        }
        self.players.append(player)
    def get_average_scores(self):
        """计算所有球员平均分"""
        averages = {}
        for player in self.players:
            avg = sum(player['scores']) / len(player['scores'])
            averages[player['name']] = avg
        return averages
    def find_best_player(self):
        """找出最高分球员"""
        averages = self.get_average_scores()
        best_name = max(averages, key=averages.get)
        # 找到对应球员完整信息
        for player in self.players:
            if player['name'] == best_name:
                return {
                    'name': player['name'],
                    'team': player['team'],
                    'position': player['position'],
                    'average_score': averages[best_name],
                    'matches_scores': player['scores']
                }
        return None
    def team_ranking(self):
        """球队平均评分排名"""
        team_scores = defaultdict(list)
        for player in self.players:
            avg = sum(player['scores']) / len(player['scores'])
            team_scores[player['team']].append(avg)
        team_avg = {team: sum(scores)/len(scores) 
                   for team, scores in team_scores.items()}
        return sorted(team_avg.items(), key=lambda x: x[1], reverse=True)
# 使用示例
stats = PlayerStats()
# 添加球员数据
stats.add_player("梅西", "巴黎", "前锋", [9.5, 9.8, 9.3, 9.7, 9.6])
stats.add_player("姆巴佩", "巴黎", "前锋", [9.6, 9.8, 9.4, 9.7, 9.5])
stats.add_player("哈兰德", "曼城", "前锋", [9.3, 9.5, 9.0, 9.4, 9.2])
stats.add_player("德布劳内", "曼城", "中场", [9.7, 9.5, 9.6, 9.4, 9.8])
stats.add_player("萨拉赫", "利物浦", "前锋", [9.0, 9.2, 8.8, 9.1, 9.3])
# 找出最佳球员
best = stats.find_best_player()
if best:
    print("=" * 40)
    print("🏆 评分最高球员详情:")
    print("=" * 40)
    print(f"球员: {best['name']}")
    print(f"球队: {best['team']}")
    print(f"位置: {best['position']}")
    print(f"场次评分: {best['matches_scores']}")
    print(f"平均评分: {best['average_score']:.2f}")
print("\n各球队实力排名:")
for i, (team, score) in enumerate(stats.team_ranking(), 1):
    print(f"第{i}名: {team} (平均{score:.2f}分)")

运行示例输出

运行这些代码,你会看到类似以下的输出:

最高分球员: 梅西
最高评分: 9.8
各球员平均评分:
梅西: 9.58
C罗: 9.20
内马尔: 8.82
姆巴佩: 9.60
德布劳内: 9.60
🏆 平均评分最高球员: 姆巴佩
最高平均评分: 9.60

这些方法各有特点:

  • 方法一:最简单直接
  • 方法二:包含多个评分场次
  • 方法三:适合复杂数据分析
  • 方法四:面向对象,便于扩展
  • 方法五:完整的统计系统

你可以根据实际需求选择合适的方法!

抱歉,评论功能暂时关闭!