某班学生评选-等奖学金,学生的10门主干课成绩存在考生文件夹下文件score.txt中,每行为一个学生的
信息,分别记录了学生学号、姓名以及10门课成绩,格式如下:
1820161043郑珉镐68 66 837756 73 6169 66 78
1820161044沈红伟91 7081 91 9680 7891 89 94
从这些学生中选出奖学金候选人,条件是:
总成绩排名在前10名;
全部课程及格(成绩大于等于60)。
问题1:给出按总成绩从高到低排序的前10名学生名单,并写入文件candidate0.txt,每行记录一个学生的
信息,分别为学生学号、姓名以及10门课成绩。补充考生文件夹下文件PY301-1.py,完成这-功能。
问题2:读取文件candidate0.txt,从中选出候选人,并将学号和姓名写入文件candidate.txt,格式如下:
1010112161722张三
1010112161728李四
补充考生文件夹下文件PY301-2.py,完成这一功能。
参考答案
- L=[]#L中的元素是学生原始成绩和总成绩
- #[['1820161043', '郑珉镐', '68', '66', '83', '77', 697],[],[]]
- fi = open("score.txt","r")#此处可多行
- fo = open("candidate0.txt","w")
- lines = fi.readlines()
- fi.close()
- for line in lines:
- #学生
- st = line.strip().split()
- sm = 0#总成绩
- for i in range(1,11):#1,2,3,4,..10
- sm += int(st[-i])
- st.append(sm)
- L.append(st)
- L.sort(key=lambda x:x[-1],reverse=True) #按学生总成绩从大到小排序
- for i in range(10): #此处可多行
- fo.write(" ".join(L[i][:-1])+"\n")
- fo.close()