是用键盘输入,内容生成score1.txt,还是数据在代码中?
你题目的解答代码如下:
li = [
['学号','学院','姓名','语文','数学','英语'],
['0001','经管','王东','70','83','72'],
['0002','统计','张三','90','78','80'],
['0003','经管','李强','86','90','88'],
['0004','统计','何晓','85','90','86'],
['0005','数学','周舟','85','86','87'],
['0006','统计','于欣','78','68','78'],
['0007','数学','刘子始','76','75','73'],
['0008','经管','杨心怡','90','97','95'],
['0009','数学','刘明','65','70','62'],
['0010','经管','张楠','77','84','63'],
['0011','统计','何雨','83','78','90'],
['0012','数学','刘丽','93','98','95']
]
with open(r'score1.txt', 'w', encoding='utf-8') as fileObj:
for d in li:
fileObj.write(" ".join(d)+'\n')
生成的score1.txt
第二题
li = [
['学号','学院','姓名','语文','数学','英语'],
['0001','经管','王东','70','83','72'],
['0002','统计','张三','90','78','80'],
['0003','经管','李强','86','90','88'],
['0004','统计','何晓','85','90','86'],
['0005','数学','周舟','85','86','87'],
['0006','统计','于欣','78','68','78'],
['0007','数学','刘子始','76','75','73'],
['0008','经管','杨心怡','90','97','95'],
['0009','数学','刘明','65','70','62'],
['0010','经管','张楠','77','84','63'],
['0011','统计','何雨','83','78','90'],
['0012','数学','刘丽','93','98','95']
]
with open(r'score1.txt', 'w', encoding='utf-8') as fileObj:
for d in li:
fileObj.write(" ".join(d)+'\n')
with open(r'score1.txt', 'r', encoding='utf-8') as fileObj:
t = list(fileObj.readlines())
rdic = {'语文':[],'数学':[],'英语':[]}
scli = []
xys = {}
for v in t[1:]:
v = v.strip().split()
d = {'学号':v[0],'学院':v[1],'姓名':v[2],'语文':float(v[3]),'数学':float(v[4]),'英语':float(v[5])}
d['总成绩'] = d['语文']+d['数学']+d['英语']
scli.append(d)
for k,a in rdic.items():
a.append(d[k])
xys[d['学院']] = xys.get(d['学院'],0)+d['总成绩']
for k,a in rdic.items():
print(f'{k}最高分:{max(a)},最低分:{min(a)}')
print("每个同学的总成绩,按从大到小排序输出:")
scli.sort(key=lambda d: d['总成绩'], reverse=True)
for v in scli:
print(v)
xyli = sorted(xys.items(), key=lambda x:x[1], reverse=True)
with open('total_sum.txt','w', encoding='utf-8') as fileObj:
for k,v in xyli:
fileObj.write(f'{k}学院的总分为{v}\n')
print(f'{k}学院的总分为{v}')
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
这里有一个相同问题: 请查看是否对问题有帮助~
https://ask.csdn.net/questions/7735507