某班学生评选一等奖学金, 学生的10 门主干课成绩存在考生文件夹下文件score .txt 中, 每行为一个学生的信息, 分别记录了学生学号、姓名以及10 门课成绩, 格式如下:
1820161043 郑珉镐68 66 83 77 56 73 61 69 66 78
1820161044 沈红伟91 70 81 91 96 80 78 91 89 94
从这些学生中选出奖学金候选人, 条件是: 1) 总成绩排名在前10 名; 2 ) 全部课程及格( 成绩大于等于60 )。
问题1 :
给出按总成绩从高到低排序的前10 名学生名单, 并写入文件candidateo. txt , 每行记录一个学生的信
息, 分别为学生学号、姓名以及10 门课成绩。补充考生文件夹下文件PY301 一1. py, 完成这一功能。
f=open("score.txt","r")
lines=f.readlines()
f.close()
D=[] #单个学生的数据
L=[] #L中的元素是学生原始成绩和总成绩
for line in lines:
D=line.split()
s=0 #每个学生的总成绩初始值
for i in range(10):
s+=int(D[i+2]) #各科成绩累加求和,+2是因为前两个元素是学号和姓名
D.append(s)
L.append(D)
L.sort(key=lambda x:x[-1],reverse=True) #按学生总成绩从大到小排序
f=open('candidate0.txt','w')
for i in range(10): #取前十个学生数据
for j in range(len(L[i])): #一个学生的各项数据
f.write('{} '.format(L[i][j])) #写各项数据,用空格隔开
f.write('\n') #换行
f.close()
问题2 :
读取文件candidateo. txt , 从中选出候选人, 并将学号和姓名写入文件candidate .txt , 格式如下.
1010112161722 张三
1010112161728 李四
…
f=open("candidate0.txt",'r')
lines=f.readlines()
f.close()
D=[]
f=open('candidate.txt','w')
for line in lines:
D=line.split()
for i in range(10):
if int (D[i+2])<0:
break
else:
f.write('{}{}\n'.format(D[0],D[1]))
f.close()