文件test7-6.txt中保存了5个学生的课程成绩。 学号,姓名,语文,数学,外语 2001,陈晓群,99,88,76 2002,刘伟,108,84,84 2003,杨明翰,111,52,120 2004,王锋,93,52,80 2005,雷蓉生,69,89,74 编写一个程序,从文件读取成绩,计算总分,按总分从高到低的顺序输出(各字段对齐),运行结果如下: 名次 学号 姓名 语文 数学 外语 总分 1 2003杨明翰 111 52 120 287 2 2002刘伟 108 84 84 276 3 2001陈晓群 99 88 76 263 4 2004王锋 93 52 80 225 5 2005雷蓉生 69 89 74 225 5.使用上题中的数据,完成下列任务: (1)计算每个学生的课程平均成绩,将学号、姓名和平均成绩以列表形式写入文件test7-8.txt。 (2)读取列表test7-8.txt中的列表,将其按平均成绩名次输出。 运行结果如下: 名次 学号 姓名 平均分 1 2003 杨明翰 95.7 2 2002 刘伟 92.0 3 2001 陈晓群 87.7 4 2004 王锋 75.0 5 2005 雷蓉生 75.0
时间: 2024-01-19 19:04:49 浏览: 147
以下是Python代码实现:
# 读取文件并计算总分
with open("test7-6.txt", "r") as f:
lines = f.readlines()
scores = []
for line in lines[1:]:
student = line.strip().split(",")
total = sum(map(int, student[2:]))
scores.append((student[0], student[1], int(student[2]), int(student[3]), int(student[4]), total))
scores.sort(key=lambda x: x[-1], reverse=True)
# 输出按总分排序后的成绩单
print("{0:^4}{1:^6}{2:^10}{3:^6}{4:^6}{5:^6}{6:^6}".format("名次", "学号", "姓名", "语文", "数学", "外语", "总分"))
for i, score in enumerate(scores):
print("{0:^4}{1:^6}{2:<10}{3:^6}{4:^6}{5:^6}{6:^6}".format(i+1, score[0], score[1], score[2], score[3], score[4], score[5]))
# 计算每个学生的平均成绩并写入文件
with open("test7-8.txt", "w") as f:
for score in scores:
avg = round(score[-1] / 3, 1)
f.write("{0},{1},{2}\n".format(score[0], score[1], avg))
# 读取文件并按平均成绩排序输出
with open("test7-8.txt", "r") as f:
lines = f.readlines()
avg_scores = []
for line in lines:
student = line.strip().split(",")
avg_scores.append((student[0], student[1], float(student[2])))
avg_scores.sort(key=lambda x: x[-1], reverse=True)
# 输出按平均成绩排序后的名次表
print("{0:^4}{1:^6}{2:^10}{3:^8}".format("名次", "学号", "姓名", "平均分"))
for i, score in enumerate(avg_scores):
print("{0:^4}{1:^6}{2:<10}{3:^8}".format(i+1, score[0], score[1], score[2]))
阅读全文