本文目录导读:

我来给你写一个统计球员评分最高者的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
这些方法各有特点:
- 方法一:最简单直接
- 方法二:包含多个评分场次
- 方法三:适合复杂数据分析
- 方法四:面向对象,便于扩展
- 方法五:完整的统计系统
你可以根据实际需求选择合适的方法!