Python编写程序,计算并输出每个学生的平均分(精确到小数点后1位)及总分。in.txt文件中,字段之间用英文逗号分隔,该文件存放学生的语文数学英语的成绩等数据。将结果按总分降序排序后,将排序结果写入到out.txt中,数据之间的分隔符为英文逗号
时间: 2023-11-27 12:54:10 浏览: 68
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
下面是Python代码实现:
```python
# 读取文件内容
with open('in.txt', 'r') as f:
lines = f.readlines()
# 计算平均分和总分,并存储到字典中
data = {}
for line in lines:
line = line.strip() # 去除换行符和空格
fields = line.split(',') # 按逗号分隔字段
name = fields[0]
scores = [int(x) for x in fields[1:]] # 将成绩转为整数
total_score = sum(scores)
avg_score = round(total_score / len(scores), 1) # 保留一位小数
data[name] = {'total_score': total_score, 'avg_score': avg_score}
# 按总分降序排序
sorted_data = sorted(data.items(), key=lambda x: x[1]['total_score'], reverse=True)
# 将结果写入文件
with open('out.txt', 'w') as f:
for item in sorted_data:
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文件内容如下:
```
张三,80,90,70
李四,85,75,90
王五,90,80,85
```
则out.txt文件内容为:
```
王五,255,85.0
李四,250,83.3
张三,240,80.0
```
阅读全文