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

保龄球得分程序开发遇阻:双程序功能需求及实现咨询

嘿,我来帮你搞定这个保龄球得分程序的问题!我会用Python写两个独立的模块,完美匹配你的需求——一个负责录入保存信息,另一个负责读取计算平均分,咱们一步步来~

模块1:录入队员信息并保存到bowling.txt

这个模块会引导你输入4名队员的姓名,以及每人3场比赛的得分,把所有信息写入bowling.txt文件,同时在控制台实时展示你录入的内容。

def save_bowling_scores():
    # 准备存储所有队员信息的列表
    players = []
    for i in range(4):
        print(f"\n请输入第{i+1}名队员的姓名:")
        name = input().strip()
        # 录入3场得分,加有效性校验
        scores = []
        for j in range(3):
            while True:
                try:
                    score = int(input(f"请输入{name}第{j+1}场的得分:"))
                    # 保龄球单场得分范围是0-300,做个合理性判断
                    if 0 <= score <= 300:
                        scores.append(str(score))
                        break
                    else:
                        print("得分得在0到300之间哦,请重新输入!")
                except ValueError:
                    print("请输入有效的数字得分呀!")
        # 把姓名和得分拼接成一行,用逗号分隔方便后续读取
        player_line = f"{name},{','.join(scores)}"
        players.append(player_line)
        # 实时展示录入内容
        print(f"已录入:{name} | 三场得分:{', '.join(scores)}")
    
    # 写入文件
    with open("bowling.txt", "w", encoding="utf-8") as f:
        f.write("\n".join(players))
    print("\n所有信息已成功保存到bowling.txt文件!")

# 启动程序
if __name__ == "__main__":
    save_bowling_scores()

这里加了两个实用小细节:

  • 校验输入的得分是有效数字,并且符合保龄球的合理得分范围,避免无效数据
  • 用逗号分隔字段,后续读取拆分信息会特别顺畅

模块2:读取bowling.txt并计算平均分

这个模块会读取之前保存的文件,解析每个队员的得分,计算平均分后展示出来,还加了异常处理,避免文件不存在或格式错误导致程序崩溃。

def calculate_average_scores():
    try:
        with open("bowling.txt", "r", encoding="utf-8") as f:
            lines = f.readlines()
        
        print("\n=== 保龄球队员平均分统计 ===")
        for line in lines:
            line = line.strip()
            if not line:
                continue  # 跳过空行
            # 拆分姓名和得分数据
            parts = line.split(",")
            name = parts[0]
            scores = list(map(int, parts[1:]))
            # 计算平均分,保留1位小数更直观
            average = sum(scores) / len(scores)
            print(f"{name} | 三场得分:{', '.join(map(str, scores))} | 平均分:{average:.1f}")
    
    except FileNotFoundError:
        print("错误:没找到bowling.txt文件,请先运行第一个模块录入信息哦!")
    except ValueError:
        print("错误:文件内容格式不对,请确保每条记录是'姓名,得分1,得分2,得分3'的格式!")

# 启动程序
if __name__ == "__main__":
    calculate_average_scores()

使用起来超简单:先运行第一个模块录入所有队员信息,再运行第二个模块就能看到清晰的平均分统计啦~要是你用的是其他编程语言(比如Java、C#),随时告诉我,我再给你调整对应的代码!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:13:42