第1题
某班学生评选一等奖学金,学生的 10 门主课成绩存在文件 score.txt(请自行按照格式创建文件 score.txt)中,每行为一个学生的信息,分别记录了学生学号、姓名以及 10 门课成绩,格式如下:
1010112161716 郑一 68 66 83 77 56 73 61 69 66 78
1010112161717 沈二 91 70 81 91 96 80 78 91 89 94……
从这些学生中选出奖学金候选人,条件:①总成绩排名在前 10 名;②全部课程及格(成绩大于等于 60)。
(1)给出按总成绩从高到低排序的前 10 名学生名单,并写入文件 candidate0.txt,每行记录一个学生的信息,分别为学生学号、姓名以及 10 门课成绩。
(2)
读取文件 candidate0.txt,从中选出候选人,并将学号和姓名写入文件 candidate.txt,格式如下。
1010112161722 张三
1010112161728 李四
……
参考答案:
(1)
L=[]
fo = open("score.txt", "r")
fi = open("candidate0.txt", "w")
lines = fo.readlines()
for line in lines:
line = line.strip()
student = line.split(' ')
sum = 0
for i in range(1,11):
sum += int(student[-i])
student.append(str(sum))
L.append(student)
L.sort(key=lambda x:x[-1],reverse=True)
for i in range(10):
fi.write(' '.join(L[i][:-1]) + '\n')
fo.close()
fi.close()(2)
fo = open("candidate0.txt", "r")
fi = open("candidate.txt", "w")
L = [] # 存储候选人
lines = fo.readlines()
for line in lines:
line = line.strip()
student = line.split(' ')
for i in student[-10:]:
if int(i) < 60:
break
else:
L.append(student[:2])
for i in L:
fi.write(' '.join(i) + '\n')
fo.close()
fi.close()