读文件score.txt,统计三门课程的总分,写入文件write.txt,并在控制台中输出总分最高同学的学号和分数
假设score.txt文件中每行包含学号、语文分数、数学分数、英语分数,用空格分隔。那么,代码如下:
# 打开score.txt文件,读取数据
with open('score.txt', 'r') as f:
lines = f.readlines()
# 统计每个学生的总分
scores = {}
for line in lines:
items = line.split()
student_id = items[0]
total_score = sum([int(x) for x in items[1:]])
scores[student_id] = total_score
# 将每门课程的总分写入write.txt文件
with open('write.txt', 'w') as f:
chinese_total = sum([int(x.split()[1]) for x in lines])
math_total = sum([int(x.split()[2]) for x in lines])
english_total = sum([int(x.split()[3]) for x in lines])
f.write(f'语文总分:{chinese_total}\n')
f.write(f'数学总分:{math_total}\n')
f.write(f'英语总分:{english_total}\n')
# 输出总分最高同学的学号和分数
max_score_student_id = max(scores, key=scores.get)
max_score = scores[max_score_student_id]
print(f'总分最高的同学是:{max_score_student_id},分数是:{max_score}')
在这个例子中,我们使用with open语句来打开文件并读取/写入数据。读取score.txt文件时,我们使用readlines()方法将每行数据读取到一个列表中。然后,我们使用一个循环来计算每个学生的总分,并将学号和总分存储到一个字典中。接下来,我们将每门课程的总分写入write.txt文件,并输出总分最高同学的学号和分数。
PS: 请在当前目录创建score.txt, 内容类似:
1 98 96 90
2 99 100 85
3 67 87 76
with open('c:\ scores.txt','a') as f:
f.write('输入内容')