高仿模拟练习,完整编写程序并运行出结果,答案点击按钮展开
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)
.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。