本文目录导读:

我来帮你写一个Python案例来统计哪支队伍的失误次数更少,这里提供几种不同的实现方式:
基础版(字典存储)
def compare_mistakes(teams_data):
"""
比较各队的失误次数
teams_data: 字典,格式为 {球队名: 失误次数}
"""
if not teams_data:
return "没有数据"
# 找出失误最少的球队
min_mistakes = min(teams_data.values())
best_teams = [team for team, mistakes in teams_data.items()
if mistakes == min_mistakes]
print("各队失误情况:")
for team, mistakes in sorted(teams_data.items(), key=lambda x: x[1]):
print(f"{team}: {mistakes}次")
print(f"\n失误最少的球队: {'、'.join(best_teams)} ({min_mistakes}次)")
return best_teams
# 示例使用
teams = {
"火箭队": 15,
"勇士队": 8,
"湖人队": 12,
"凯尔特人队": 15,
"公牛队": 5
}
compare_mistakes(teams)
进阶版(包含多场比赛数据)
def compare_multi_game_mistakes(game_data):
"""
统计多场比赛的失误总量
game_data: 字典,格式为 {球队名: [每场失误列表]}
"""
# 计算每队总失误
total_mistakes = {}
for team, mistakes_list in game_data.items():
total = sum(mistakes_list)
avg = total / len(mistakes_list)
total_mistakes[team] = {
'total': total,
'avg': avg,
'games': len(mistakes_list)
}
# 按总失误排序
sorted_teams = sorted(total_mistakes.items(), key=lambda x: x[1]['total'])
print("球队失误统计:")
print("-" * 40)
print(f"{'球队':<10} {'总失误':<8} {'场均':<8} {'场次'}")
print("-" * 40)
for team, stats in sorted_teams:
print(f"{team:<10} {stats['total']:<8} {stats['avg']:.2f} {stats['games']}")
# 找出最少失误的球队
min_team = sorted_teams[0][0]
min_mistakes = sorted_teams[0][1]['total']
print(f"\n🏆 失误最少的球队: {min_team} (总失误: {min_mistakes}次)")
return min_team
# 示例数据:某赛季各队前5场比赛的失误
game_data = {
"勇士队": [8, 12, 7, 9, 10],
"湖人队": [15, 11, 13, 8, 12],
"火箭队": [20, 18, 16, 19, 17],
"凯尔特人队": [14, 12, 15, 13, 11],
}
compare_multi_game_mistakes(game_data)
面向对象版本
class Team:
def __init__(self, name):
self.name = name
self.mistakes = []
def add_game_mistakes(self, mistakes):
self.mistakes.append(mistakes)
def total_mistakes(self):
return sum(self.mistakes)
def avg_mistakes(self):
if not self.mistakes:
return 0
return self.total_mistakes() / len(self.mistakes)
def __str__(self):
return f"{self.name} (总失误: {self.total_mistakes()}, 场均: {self.avg_mistakes():.2f})"
class MistakeStatistician:
def __init__(self):
self.teams = {}
def add_team(self, team_name, mistakes_list):
if team_name not in self.teams:
self.teams[team_name] = Team(team_name)
for mistakes in mistakes_list:
self.teams[team_name].add_game_mistakes(mistakes)
def find_best_team(self):
if not self.teams:
return None
best_team = min(self.teams.values(), key=lambda t: t.total_mistakes())
return best_team
def display_comparison(self):
print("🏀 球队失误对比表")
print("=" * 40)
sorted_teams = sorted(self.teams.values(), key=lambda t: t.total_mistakes())
for team in sorted_teams:
print(f"• {team}")
best = self.find_best_team()
print(f"\n✅ 失误最少的队伍: {best.name}")
print(f" 总失误: {best.total_mistakes()}次 | 场均: {best.avg_mistakes():.2f}次")
# 使用示例
stat = MistakeStatistician()
# 添加各队数据
stat.add_team("勇士", [8, 12, 7, 9])
stat.add_team("湖人", [15, 11, 13, 8])
stat.add_team("火箭", [20, 18, 16, 19])
stat.add_team("热火", [10, 12, 8, 11])
stat.display_comparison()
带可视化(简单图表)
import matplotlib.pyplot as plt
def visualize_mistakes(teams_data):
"""
可视化比较各队失误
"""
teams = list(teams_data.keys())
mistakes = list(teams_data.values())
plt.figure(figsize=(10, 6))
bars = plt.bar(teams, mistakes, color=['#FF6B6B' if m != min(mistakes) else '#4ECDC4'
for m in mistakes])
# 添加数字标签
for bar, mistake in zip(bars, mistakes):
plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.5,
str(mistake), ha='center', va='bottom')
plt.title('各队失误次数对比', fontsize=16)
plt.xlabel('球队', fontsize=12)
plt.ylabel('失误次数', fontsize=12)
plt.ylim(0, max(mistakes) * 1.2)
# 用颜色标注最少失误的球队
least_labels = []
min_value = min(mistakes)
for i, (team, value) in enumerate(zip(teams, mistakes)):
if value == min_value:
least_labels.append(team)
if least_labels:
plt.text(0.02, 0.98, f'🏆 最佳: {", ".join(least_labels)} ({min_value}次)',
transform=plt.gca().transAxes, fontsize=12,
bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))
plt.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.show()
# 使用示例
teams_data = {
"勇士队": 8,
"湖人队": 12,
"火箭队": 15,
"热火队": 5,
"凯尔特人队": 10
}
compare_mistakes(teams_data)
# visualize_mistakes(teams_data) # 取消注释可查看图表
这些代码提供了不同的解决方案:
- 基础版:简单直接,适合快速比较
- 进阶版:包含多场比赛的数据统计
- 面向对象版:更规范的代码结构,便于扩展
- 可视化版:图形化展示结果
运行这些代码时会发现,它会自动找出失误最少的球队,并显示详细的比较信息,你可以根据自己的需求选择合适的版本使用。