用Python设计程序

img


设计的程序运行结果如上图就OK,最好用到数据存取的知识,请尽快解答

是用键盘输入,内容生成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

img

第二题

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}')

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

这里有一个相同问题: 请查看是否对问题有帮助~
https://ask.csdn.net/questions/7735507

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632