本文目录导读:

我来为您写一个统计球员评分的Python案例,包含多种实现方式:
方法1:使用字典和max函数
# 球员评分数据
players = {
'梅西': 9.8,
'C罗': 9.2,
'姆巴佩': 8.9,
'哈兰德': 9.5,
'内马尔': 8.7,
'莱万': 9.0
}
# 方法1:使用max函数获取最高分的球员
highest_player = max(players, key=players.get)
highest_score = players[highest_player]
print(f"评分最高的球员是:{highest_player},评分为:{highest_score}")
方法2:使用列表存储球员对象
class Player:
def __init__(self, name, score):
self.name = name
self.score = score
def __str__(self):
return f"{self.name}: {self.score}分"
# 创建球员列表
players = [
Player('梅西', 9.8),
Player('C罗', 9.2),
Player('姆巴佩', 8.9),
Player('哈兰德', 9.5),
Player('内马尔', 8.7),
Player('莱万', 9.0)
]
# 找出最高分的球员
best_player = max(players, key=lambda p: p.score)
print(f"评分最高的球员是:{best_player}")
方法3:完整统计功能
def analyze_player_scores(players_data):
"""
统计球员评分信息
"""
if not players_data:
return "没有球员数据"
# 找出最高分球员
highest_player = max(players_data, key=players_data.get)
highest_score = players_data[highest_player]
# 找出最低分球员
lowest_player = min(players_data, key=players_data.get)
lowest_score = players_data[lowest_player]
# 计算平均分
average_score = sum(players_data.values()) / len(players_data)
# 找出高于平均分的球员
above_average = [name for name, score in players_data.items()
if score > average_score]
return {
'highest': (highest_player, highest_score),
'lowest': (lowest_player, lowest_score),
'average': round(average_score, 2),
'above_average': above_average,
'total_players': len(players_data)
}
# 测试数据
players = {
'梅西': 9.8,
'C罗': 9.2,
'姆巴佩': 8.9,
'哈兰德': 9.5,
'内马尔': 8.7,
'莱万': 9.0
}
# 执行分析
result = analyze_player_scores(players)
print("=== 球员评分统计结果 ===")
print(f"总球员数:{result['total_players']}人")
print(f"最高分球员:{result['highest'][0]}({result['highest'][1]}分)")
print(f"最低分球员:{result['lowest'][0]}({result['lowest'][1]}分)")
print(f"平均分:{result['average']}分")
print(f"高于平均分的球员:{', '.join(result['above_average'])}")
方法4:支持多场比赛统计
def multi_game_analysis():
"""
多场比赛球员评分统计
"""
# 多场比赛数据
matches = {
'第一场': {'梅西': 9.5, 'C罗': 8.8, '姆巴佩': 9.0},
'第二场': {'梅西': 8.8, 'C罗': 9.5, '哈兰德': 9.2},
'第三场': {'梅西': 9.8, '姆巴佩': 8.7, '哈兰德': 9.5}
}
# 统计每个球员的总分
player_total_scores = {}
player_match_count = {}
for match, scores in matches.items():
print(f"\n--- {match} ---")
for player, score in scores.items():
# 累加总分
if player not in player_total_scores:
player_total_scores[player] = 0
player_total_scores[player] += score
# 记录出场次数
if player not in player_match_count:
player_match_count[player] = 0
player_match_count[player] += 1
print(f" {player}: {score}分")
# 计算平均分
print("\n=== 综合统计 ===")
player_averages = {}
for player in player_total_scores:
avg = player_total_scores[player] / player_match_count[player]
player_averages[player] = round(avg, 2)
# 找出综合评分最高球员
top_player = max(player_averages, key=player_averages.get)
print("\n各球员平均分:")
for player, avg in sorted(player_averages.items(), key=lambda x: x[1], reverse=True):
print(f" {player}: {avg}分")
print(f"\n🎯 综合评分最高的球员是:{top_player}")
return top_player
# 运行多场比赛统计
if __name__ == "__main__":
print("=== 单场比赛统计 ===")
players = {'梅西': 9.8, 'C罗': 9.2, '哈兰德': 9.5}
best = max(players, key=players.get)
print(f"最高分球员:{best},评分:{players[best]}")
print("\n=== 多场比赛统计 ===")
multi_game_analysis()
方法5:带输入功能的完整程序
def input_player_data():
"""
交互式输入球员评分数据
"""
players = {}
print("请输入球员评分数据(输入'结束'退出):")
while True:
name = input("请输入球员姓名:")
if name == '结束':
break
try:
score = float(input(f"请输入{name}的评分(0-10):"))
if 0 <= score <= 10:
players[name] = score
else:
print("评分必须在0-10之间!")
except ValueError:
print("请输入有效的数字!")
return players
def main():
# 选择输入方式
print("1. 使用示例数据")
print("2. 手动输入数据")
choice = input("请选择:")
if choice == '2':
players = input_player_data()
else:
players = {
'梅西': 9.8,
'C罗': 9.2,
'姆巴佩': 8.9,
'哈兰德': 9.5
}
if players:
# 找出最高分球员
highest_player = max(players, key=players.get)
highest_score = players[highest_player]
print(f"\n📊 统计结果:")
print(f"参与统计的球员:{', '.join(players.keys())}")
print(f"🏆 评分最高的球员是:{highest_player},评分:{highest_score}")
# 显示排名
print("\n📋 完整排名:")
sorted_players = sorted(players.items(), key=lambda x: x[1], reverse=True)
for rank, (name, score) in enumerate(sorted_players, 1):
print(f" 第{rank}名:{name} - {score}分")
if __name__ == "__main__":
main()
运行结果示例
=== 单场比赛统计 ===
最高分球员:梅西,评分:9.8
=== 多场比赛统计 ===
各球员平均分:
梅西: 9.37分
哈兰德: 9.35分
C罗: 9.15分
姆巴佩: 8.85分
🎯 综合评分最高的球员是:梅西
这些方法涵盖了不同的使用场景:
- 方法1:最简单的单场比赛统计
- 方法2:面向对象的实现方式
- 方法3:完整的统计功能(最高分、最低分、平均值等)
- 方法4:多场比赛的综合统计
- 方法5:带交互功能的完整程序
您可以根据具体需求选择合适的方法。