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

Python读取文本文件输出姓名-分数对及平均值求助

Python文本文件处理:姓名分数格式化输出与平均值计算

问题场景

我有一个包含如下内容的文本文件grades.txt:

John 46.5 Sam 62 Steve 45.5 Nigel 67.1 Karen 55
Henry 55 Alex 42 Graham 82 Hannah 56 Nicola 66
Ruth 81 Carl 90 Ben 66.8 

需要编写程序读取该文件,将每个姓名和分数对按指定格式逐行输出,同时计算并输出平均值,期望输出如下:

John : 46.5
Sam : 62
Steve : 45.5
Nigel : 67.1
Karen : 55
Henry : 55
Alex : 42
Graham : 82
Hannah : 56
Nicola : 66
Ruth : 81
Carl : 90
Ben : 66.8
AVERAGE: 62.684615384615384

我能读取文件内容并分割元素,但无法实现指定输出格式,目前的代码如下:

f = open("grades.txt", "r")
d = f.read()
f.close()
print(d)
print()

d = d.splitlines()
print(d)
for line in d:
    print(line)
    line = line.split()
    print (line)
    
print()

解决方案

完整代码

# 读取文件内容,用with语句自动管理文件生命周期
with open("grades.txt", "r") as f:
    content = f.read()

# 将所有内容按空白分割为单个元素的列表
items = content.split()

scores = []
# 按步长2遍历列表,每次取姓名和分数一对
for i in range(0, len(items), 2):
    name = items[i]
    score = items[i+1]
    # 按指定格式输出
    print(f"{name} : {score}")
    # 转换分数为浮点数,存入列表用于计算平均值
    scores.append(float(score))

# 计算并输出平均值
average = sum(scores) / len(scores)
print(f"AVERAGE: {average}")

关键说明

  • 文件处理优化:使用with语句替代手动open/close,能自动处理文件的打开与关闭,避免资源泄漏。
  • 统一分割逻辑:直接用content.split()提取所有空白分隔的元素,无需按行拆分后再处理,更高效地获取姓名-分数对。
  • 成对遍历:通过range(0, len(items), 2)设置步长为2的循环,每次迭代取两个元素,正好对应一组姓名和分数。
  • 平均值计算:将分数转为浮点数存入列表,后续用sum()求和后除以元素数量得到平均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:33