用python写一个代码,能够读取("C:\\Users\\ASUS\\Desktop\\student.txt","r",encoding="UTF-8")的文件,内容如下学号 姓名 语文 数学 外语 Python 221 董浩 95 75 80 80 222 罗邦楹 87 64 77 85 223 陈锦炜 75 85 66 76 224 陈天才 59 59 59 59 225 李松林 95 99 95 92 能够统计每个课程的总分和总分的排名 在文件中增多两列显示
时间: 2024-02-10 22:11:27 浏览: 61
好的,以下是代码:
```python
# 打开文件并读取内容
with open("C:\\Users\\ASUS\\Desktop\\student.txt", "r", encoding="UTF-8") as f:
content = f.readlines()
# 去除每行末尾的换行符
content = [line.strip() for line in content]
# 分离表头和数据
header = content[0].split()
data = [line.split() for line in content[1:]]
# 将成绩从字符串转为数字
for i in range(len(data)):
for j in range(2, 6):
data[i][j] = int(data[i][j])
# 计算每个学科的总分和总分排名
total_scores = [sum([row[i] for row in data]) for i in range(2, 6)]
total_scores_rank = sorted(total_scores, reverse=True)
# 在表头中增加两列
header.append("总分")
header.append("总分排名")
# 在数据中增加两列
for i in range(len(data)):
total_score = sum(data[i][2:6])
total_score_rank = total_scores_rank.index(total_score) + 1
data[i].append(total_score)
data[i].append(total_score_rank)
# 按总分排名对数据进行排序
data = sorted(data, key=lambda x: x[-1])
# 输出结果
print("\t".join(header))
for row in data:
print("\t".join([str(i) for i in row]))
```
这段代码首先打开指定路径的文件,将文件内容读入内存。然后,将每行末尾的换行符去掉并分离出表头和数据。接着,将成绩从字符串类型转为整数类型,计算每个学科的总分和总分排名,并在表头和数据末尾分别添加两列。最后,按总分排名对数据进行排序,并输出结果。
阅读全文