二级 Python 综合应用题

高仿模拟练习,完整编写程序并运行出结果,答案点击按钮展开

145综合应用题:学生成绩 CSV 排名并写回

stu_scores.csv 每行格式:姓名,数学,语文,英语(无表头,均为整数)。 1) 读取所有学生,计算每人总分=数学+语文+英语; 2) 按总分降序写入 rank.csv(格式:姓名,数学,语文,英语,总分); 3) 输出总分平均分(保留 1 位小数); 4) 输出平均分≥240 分的学生人数。

# stu_scores.csv 示例内容:
# Tom,85,90,78
# Bob,70,80,85
# Amy,95,92,90
data = []
with open("stu_scores.csv") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        name, m, c, e = line.split(",")
        m, c, e = int(m), int(c), int(e)
        total = m + c + e
        data.append( (name, m, c, e, total) )

# 请在下面编写完整程序:按总分降序写rank.csv + 输出平均分、平均分≥240人数
参考答案
# 总分降序排序
data_sorted = sorted(data, key=lambda x: x[4], reverse=True)
# 写回 rank.csv
with open("rank.csv", "w") as f:
for row in data_sorted:
line = ",".join(str(x) for x in row)
f.write(line + "
")
# 总分平均分
avg = sum(r[4] for r in data) / len(data)
print("{: .1f}".format(avg))
# 总分≥240的人数(即科目平均分≥80;也可按用户说的'平均分≥240'理解为总分≥240,此处按240)
count = sum(1 for r in data if r[4] >= 240)
print(count)
解析

读 CSV 拆 4 列,用 (name,math,chinese,english,total) 存。

sorted(key=lambda x:x[4], reverse=True) 按总分降序;join(str(x)...) 拼接写回。

sum(r[4])/len(data) 求平均。示例 Amy 总分 277≥240 算 1 人,平均约 250.0。

试题及答案仅供练习参考,不保证完全准确,正式考试请以NCRE官方教材及官方内容为准。

©2026 NCRE二级题库 版权所有