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

wen python案例 2

本文目录导读:

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

  1. 方案一:使用字典存储球员和评分
  2. 方案二:使用列表存储球员信息
  3. 方案三:支持用户输入和多个球员
  4. 方案四:带数据分析和可视化
  5. 运行示例
  6. 简单版本(最适合快速使用)

我来帮你编写一个Python程序来统计球员评分最高者是谁,这里提供几个不同实现方式的示例:

使用字典存储球员和评分

def find_top_player_dict():
    # 球员评分数据
    players_scores = {
        "詹姆斯": 28.5,
        "库里": 25.3,
        "杜兰特": 27.8,
        "字母哥": 29.1,
        "约基奇": 26.4
    }
    # 方法1:使用max函数
    top_player = max(players_scores, key=players_scores.get)
    top_score = players_scores[top_player]
    print("="*30)
    print("🏀 球员评分统计")
    print("="*30)
    for player, score in players_scores.items():
        print(f"{player}: {score}分")
    print("-"*30)
    print(f"🏆 最高评分球员: {top_player}")
    print(f"📊 评分为: {top_score}分")
    print("="*30)
    return top_player, top_score
# 运行函数
find_top_player_dict()

使用列表存储球员信息

def find_top_player_list():
    # 球员数据:[(姓名, 评分), ...]
    players = [
        ("乔丹", 30.1),
        ("科比", 25.0),
        ("詹姆斯", 28.5),
        ("库里", 24.8),
        ("杜兰特", 27.2)
    ]
    # 找到最高分球员
    top_player = max(players, key=lambda x: x[1])
    print("="*30)
    print("🏀 球员评分统计")
    print("="*30)
    for name, score in players:
        print(f"{name}: {score}分")
    print("-"*30)
    print(f"🏆 最高评分球员: {top_player[0]}")
    print(f"📊 评分为: {top_player[1]}分")
    print("="*30)
    return top_player
# 运行函数
find_top_player_list()

支持用户输入和多个球员

def find_top_player_input():
    players = {}
    while True:
        name = input("请输入球员姓名(输入'结束'退出):")
        if name == "结束":
            break
        try:
            score = float(input(f"请输入{name}的评分:"))
            players[name] = score
        except ValueError:
            print("评分请输入数字!")
            continue
    if not players:
        print("没有输入任何球员数据")
        return
    # 找到最高评分球员
    top_player = max(players, key=players.get)
    top_score = players[top_player]
    # 输出结果
    print("\n" + "="*35)
    print("📊 球员评分统计结果")
    print("="*35)
    for name, score in sorted(players.items(), key=lambda x: x[1], reverse=True):
        print(f"{'🥇' if name == top_player else '  '} {name}: {score:.1f}分")
    print("-"*35)
    print(f"🏆 最高评分球员: {top_player}")
    print(f"📊 评分: {top_score:.1f}分")
    print("="*35)
# 运行函数(取消注释即可使用)
# find_top_player_input()

带数据分析和可视化

def analyze_players_scores():
    # 示例数据
    players_data = {
        "勒布朗·詹姆斯": 28.5,
        "斯蒂芬·库里": 25.3,
        "凯文·杜兰特": 27.8,
        "扬尼斯·阿德托昆博": 29.1,
        "尼古拉·约基奇": 26.4,
        "卢卡·东契奇": 27.9,
        "吉安尼斯·斯泽比亚克": 22.5
    }
    # 统计分析
    scores_list = list(players_data.values())
    # 基本信息
    total_players = len(players_data)
    avg_score = sum(scores_list) / total_players
    max_score = max(scores_list)
    min_score = min(scores_list)
    # 找到最高分球员(可能有并列)
    top_players = [name for name, score in players_data.items() 
                   if score == max_score]
    # 输出结果
    print("="*40)
    print("           🏀 球员评分分析报告")
    print("="*40)
    print(f"总参与人数: {total_players}人")
    print(f"平均评分: {avg_score:.2f}分")
    print(f"最高评分: {max_score:.1f}分")
    print(f"最低评分: {min_score:.1f}分")
    print("-"*40)
    print("🥇 最高评分球员:")
    for player in top_players:
        print(f"   ⭐ {player}: {max_score:.1f}分")
    print("-"*40)
    print("📊 评分排名:")
    sorted_players = sorted(players_data.items(), 
                           key=lambda x: x[1], 
                           reverse=True)
    for i, (name, score) in enumerate(sorted_players, 1):
        medal = "🥇" if i == 1 else "🥈" if i == 2 else "🥉" if i == 3 else "  "
        print(f"{medal} 第{i}名: {name:<15} {score:.1f}分")
    print("="*40)
    return top_players, max_score
# 运行函数
analyze_players_scores()

运行示例

如果你运行方案一,输出结果将如下:

==============================
🏀 球员评分统计
==============================
詹姆斯: 28.5分
库里: 25.3分
杜兰特: 27.8分
字母哥: 29.1分
约基奇: 26.4分
------------------------------
🏆 最高评分球员: 字母哥
📊 评分为: 29.1分
==============================

简单版本(最适合快速使用)

def quick_find_top_player():
    # 直接定义球员评分
    scores = {
        "詹姆斯": 28.5,
        "库里": 25.3,
        "杜兰特": 27.8,
        "字母哥": 29.1,
        "约基奇": 26.4
    }
    # 一行代码找到最高分球员
    top_player = max(scores, key=scores.get)
    print(f"评分最高的球员是:{top_player},评分:{scores[top_player]}分")
    return top_player
# 使用
quick_find_top_player()

选择最适合你需求的版本:

  • 方案一:最常用,使用字典
  • 方案二:使用列表,适合简单场景
  • 方案三:支持手动输入数据
  • 方案四:完整的统计分析
  • 快速版本:一行代码解决问题

你可以根据实际数据格式选择相应的实现方式。

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