8.编写一个程序,计算并输出每个学生的平均分(精确到小数点后1位)及总分。程序的相关说明和要求如下: (1)假设in.txt文件在当前目录(和源程序在同一目录)下,字段之间用英文逗号分隔。该文件中存放学生的语文、数学、英语的成绩等数据。 (2)请读取in.txt中的数据,并计算每位学生的平均(精确到小数点后1位)及总分,并将结果按总分降序排序后,将排序后结果写入到当前目录下的out.txt中(数据之间的分隔符为英文逗号)。
时间: 2023-11-28 12:50:35 浏览: 86
以下是 Python 3 的程序实现:
```python
# 读取文件中的数据
with open('in.txt', 'r') as f:
data = f.readlines()
# 定义一个空字典,用于存储每个学生的成绩和总分
score_dict = {}
# 遍历数据,将每个学生的成绩和总分存储到字典中
for line in data:
line = line.strip().split(',')
name = line[0]
score = list(map(float, line[1:]))
total_score = sum(score)
avg_score = round(total_score / len(score), 1)
score_dict[name] = {'score': score, 'total_score': total_score, 'avg_score': avg_score}
# 对字典按照总分进行降序排序
sorted_score_dict = sorted(score_dict.items(), key=lambda x: x[1]['total_score'], reverse=True)
# 将结果写入到 out.txt 中
with open('out.txt', 'w') as f:
for item in sorted_score_dict:
name = item[0]
total_score = item[1]['total_score']
avg_score = item[1]['avg_score']
f.write(f"{name},{total_score},{avg_score}\n")
```
上述程序首先读取 in.txt 文件中的数据,然后遍历数据,计算每个学生的平均分和总分,并将学生的成绩和总分存储到一个字典中。接着,对字典按照总分进行降序排序,并将排序后的结果写入到 out.txt 文件中。在写入结果时,每个学生的姓名、总分和平均分之间用英文逗号分隔。
阅读全文