计算机二级python真题
文章目录
一、简单应用——明星投票
描述使用字典和列表型变量完成最有人气的明星的投票数据分析。投票信息由附件里的文件vote.txt给出,
一行只有一个明星姓名的投票才是有效票
。有效票中得票最多的明星当选最有人气的明星。
问题一:请统计
有效票张数
。在编程模板中补充代码完成程序。
像一行同时出现 (孙俪 杨幂)则为无效票
附图vote.txt截图
代码:
withopen("vote.txt",encoding="utf-8")as f:
names = f.readlines()
n =0for name in names:
num =len(name.split(" "))if num ==1:
n+=1print("有效票{}张".format(n))
问题二:请给出当选最有人气明星的姓名和票数。
withopen("vote.txt",encoding="utf-8")as f:
names = f.readlines()
D ={}for name in names:iflen(name.split(" "))==1:
D[name[:-1]]=D.get(name[:-1],0)+1
l =list(D.items())
l.sort(key=lambda s:s[1],reverse =True)
name = l[0][0]
score = l[0][1]print("最具人气明星为:{},票数为:{}".format(name, score))
二、综合应用题《评奖学金 两问》
某班学生评选一等奖学金,学生的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名;
给出按总成绩从高到底排序的前10名学生名单,并写入文件candidate0.txt,每行纪录一个学生的信,息,分别为学生学号、姓名以及10门课成绩。补充,修改编程模板中的代码完成这些功能。
代码:
fi =open("score.txt","r", encoding="utf-8")
lines = fi.readlines()
D =[]# 单个学生的数据
L =[]# 所有学生原始成绩和总成绩# 读取学生单科成绩并计算总成绩for line in lines:
D = line.split()
s =0# 每个学生的总成绩初始值for i inrange(10):
s +=int(D[i +2])# 各科成绩累加求和,+2是因为前两个元素是学号和姓名
D.append(s)
L.append(D)
fi.close()
L.sort(key=lambda x: x[-1], reverse=True)# 按学生总成绩从大到小排序
fo =open('candidate0.txt','w', encoding="utf-8")for i inrange(10):# 取前十个学生数据for j inrange(len(L[i])-1):# 一个学生的各项数据
fo.write('{} '.format(L[i][j]))# 文件中写入各项数据,用空格隔开
fo.write('\n')# 换行
fo.close()
问题2:全部课程及格(成绩大于等于60) 。(下一题的答案中会增加判断条件)
问题2:读取文件candidate0.txt,从中选出候选人,并将学号和姓名写入文件candidate.txt,格式如下:
1010112161722 张三
1010112161728 李四
……
代码:
fi =open('candidate0.txt', encoding="utf-8")
ls =[]for line in fi:
ls.append(line.strip().split())
fi.close()
fo =open('candidate.txt','w', encoding="utf-8")for l in ls:for i inrange(2,len(l)):ifeval(l[i])<60:breakelse:
fo.write('{} {}\n'.format(l[0], l[1]))
fo.close()
版权归原作者 倾夏12319 所有, 如有侵权,请联系我们删除。