You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python初学者开发高尔夫成绩展示程序:匹配获奖者姓名与对应成绩

高尔夫比赛统计代码修复方案

现有代码存在的问题

  • displayReport 函数无返回值,导致main函数中拿到的winner变量为None,无法正确输出获奖者姓名
  • 报表表头打印逻辑放在了遍历球手的循环内,会重复打印多次表头
  • 没有统计最低分对应的球手索引,无法关联获胜者姓名和成绩

修复后完整代码

def main():                                             # 定义主函数
    golferNames = []                                    # 存储球手姓名的空列表
    golferScores = []                                   # 存储球手成绩的空列表
    golferCount = inputInfo(golferNames,golferScores)   # 调用输入函数,传入两个列表
    winner_name, min_score = displayReport(golferNames,golferScores)    # 调用报表生成函数,返回获奖者姓名和最低分

    # 打印获胜者结果
    print(f'获胜者是 {winner_name},夺冠成绩为 {min_score},共有 {golferCount} 位选手参赛。') 

def inputInfo(golferNames,golferScores):                # 定义输入信息函数
    golferCount = 0                                     # 初始化选手计数
    another = input('是否需要输入球手信息?(y/n)')# 启动循环的判断条件
    while another != 'n':                               # 循环输入的判断条件
        golferName = input('请输入球手姓名:')
        golferNames.append(golferName)
        golferScore = int(input('请输入球手成绩:'))
        golferScores.append(golferScore)
        golferCount += 1
        another = input('是否需要继续输入其他球手信息?(y/n)')
    return golferCount        
        
def displayReport(golferNames,golferScores):            # 定义报表生成函数
    import datetime                                     # 导入时间模块
    curDateTime = datetime.datetime.now()               # 获取当前时间
    # 打印报表表头,只需打印一次,移出循环
    print('SPRINGFORK业余高尔夫俱乐部')
    print(f'赛事日期:{curDateTime}')
    print(f'{"球手姓名":<20}{"成绩"}')
    print('-'*25)
    # 遍历打印所有选手信息,同时统计最低分对应的索引
    min_score = min(golferScores)
    min_index = golferScores.index(min_score)
    winner = golferNames[min_index]
    index = 0
    for golfer in golferNames:
        print(f'{golferNames[index]:<20}{golferScores[index]}')
        index += 1
    # 返回获胜者姓名和最低分
    return winner, min_score
        
main()  # 调用主函数

核心修改说明

  • 把表头打印逻辑移出遍历球手的循环,仅打印一次
  • 在displayReport函数中通过min()获取最低成绩,再通过list.index()方法拿到最低成绩对应的索引,用索引从姓名列表中取出获胜者姓名
  • 修改displayReport函数的返回值,同时返回获胜者姓名和最低成绩,供主函数打印输出使用

内容的提问来源于stack exchange,提问作者Dave Britton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:24:00