python二级第七套答案
46、某班学生评选一等奖学金,学生的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名学生名单,并写入文件candidate0.txt,每行记录一个学生的信息,分别为学生学号、姓名以及10门课成绩。补充考生文件夹下文件PY301-1.py,完成这一功能。
问题2:读取文件candidate0.txt,从中选出候选人,并将学号和姓名写入文件candidate.txt格式如下:
1010112161722 张三
1010112161728 李四
……
补充考生文件夹下文件PY301-2.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()
'''
输入文件 : candidate0.txt
输出文件 : candidate.txt
'''
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()