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

wen python案例 6

本文目录导读:

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

  1. 方法1:使用字典和max函数
  2. 方法2:使用列表存储球员对象
  3. 方法3:完整统计功能
  4. 方法4:支持多场比赛统计
  5. 方法5:带输入功能的完整程序
  6. 运行结果示例

我来为您写一个统计球员评分的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. 方法1:最简单的单场比赛统计
  2. 方法2:面向对象的实现方式
  3. 方法3:完整的统计功能(最高分、最低分、平均值等)
  4. 方法4:多场比赛的综合统计
  5. 方法5:带交互功能的完整程序

您可以根据具体需求选择合适的方法。

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