计算机二级python综合应用题(七)

某班学生评选一等奖学金, 学生的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()
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值