python二级第七套答案

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yk 坤帝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值