国家二级Python(综合应用题)模拟试卷3 (题后含答案及解析)
全部题型 4. 综合应用题
综合应用题
1. 《射雕英雄传》是金庸的重要武侠作品之一。这里给出一个《射雕英雄传》的网络版本,文件名为“射雕英雄传一网络版.cxt”。请编写程序,统计该文件出现的所有中文词语及出现次数(不要求输出),并输出按照出现次数最多的8个词语,采用如下方式打印输出。词语1,词语2,词语3,词语4,词语5,词语6,词语7,词语8
正确答案:参考程序:import jiebafi=open(”射雕英雄传一网络版-txt”,”r”,encoding=’utf一8’)txt=fi.read( )fi.clo( )ls=jieba.lcut(txt)d={}for w in ls:d[w]=d.get(w,0)+1for x in’’\n,。’’“:”:del d[x]rst=[]for i in range(8):mx=0mxj=0for j in d:if d [j]>mx:mx=d[j]mxj=jrst.append(mxj)del d[mxj]print(‘‘。’’.join(rst))
2. 恺撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,即循环左移3位,对应外国诗
关系如下: 原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],共20902个字符。请以10451位循环移位数量,编写中文文本的类恺撒密码加解密方法。 原文字符P,其密文字符C满足如下条件: C=(P+10451)mod 20902 解密与加密方法一致,满足: P=(C+10451)mod 20902 标点符号、英文字母不加密。 下面是一段测试文本:输入(加解密前):全国计算机等级考试二级Python语言程序设计输出(加解密后):稻翐拎勄逍剶嗔地挂睟嗔 Python挚愭离蝢拫拎
正确答案:参考程序:s=input(‘‘输入(加解密前):’’)d={}for c in[0x4e00,0x9fa5]:for i in range(20902):d[chr(i+c)]=chr((i+10451)%20902+c)print(时间证明‘‘输出(加解密后):’’+’’’’.join([d.get(c,c)for c in s]))
3. 大胆预测2018年至2020年我国五个城市的房产价格走势如下所示,同时保存为“price2020.csv”文件。其中,2018/2019/2020年所列出的数值为当前年份与前一年份的涨跌比。例如,2018列数据是预测2018年房价以2017年价格为基数(100)的比值,2019列数据是预测2019年房价以2018年价格为基数(100)的比值,2020列数据是预测2020
年房价以2019年价格为基数(100)的比值。城市 2018 2019 2020北京 112 130 140上海 123 140 121广州 99 95 130深圳 101 129 94沈阳 93 92 87请编写程序,以2017年为基数,预测2018/2019/2020年房价涨跌比,生成一个类似文件,名称为“price2020a2017.csv”,保留整数。
反对邪教
正确答案:参考程序:fi=open(‘‘price2020.csv’’,’’r’’)fo=open(‘‘price2020a2017.csv’’,’’w’’)ls=[]for line in fi:line=line.replace(‘‘\n’’,’’’’)ls.append(line.split(‘‘,’’))for i in range(1,len(ls)):for j in range(1,len(ls[i])):if ls[i][j].isnumeric( ):if j==1:ba=100el:ba=float(Is[i][j-1])ls[i][j]=‘‘{:.0f}’’.format(ba*float(ls[i][j])/100)for row in ls:fo.write(‘‘,’’.join(row)+’’\n’’)fi.clo( )fo.clo( )
4. 文件ngchina.htm1保存了网页源代码,请将该页面中图片的URL提取出来,并输出所有图片的URL。输出格式如下:第1个URL:http://image.ngchina.com.cn/2018/0829/20180829012548753.jpg第2个URL:http://image.ngchina.com.cn/2018/0823/thumb_469_352_20180823121155508.Jpg
正确答案:参考程序:#读取HTML文件内容def getHTMLlines(htmlpath):f=open(htmlpat
h,’’r安全投入保障制度’’,encoding=‘utf一8’111)ls=f.readlines( )f.clo( )return ls#用于解析文件并提取图片的URLdef extractlmageUrls(htmllist):urls=[]for line in htmllist:if’img物理学大题典’in line:url=line.split(‘src=‘)[-1].split(‘‘‘‘)[1]if’http女生的英语怎么写’in url:urls.append(ur1)return urls#将获取的链接输出到屏幕上def showResults(urls):count=1for ur1 in urls:print(‘‘第{:2}个URL:{}’’.format(count,ur1))count+=1#主程序:1读取文件;2解析并提取其中的图片链接;3输出提取结果到屏幕def main( ):inputfile=‘‘ngchina.html’’htmllines=getHTMLlines(inputfile)imageUrls=extractImageUrls(htmllines)showResults(imageUrls)
5. 下面是一个传感器采集数据文件nsor-data.txt的一部分:2018-02-28 01:03:16.33393 19.3024 38.4629 45.08 2.687422018-02-28 01:06:116.013453 19.1652 38.8039 45.08 2.687422018-02-28 01:06:46.778088 19.175 38.8379 45.08 2.69964其中,每行是一个读数,空格分隔多个含义,分别包括日期、时间、温度、湿度、光照和电压。其中,光照处于第5列。请编写程序,统计并输出传感器采集数据中光照部分的最大值、最小值和平均值,所有值保留小数点后2位。
正确答案:参考程序:#SensorReader.py#2018—02—28 01:03:16.33393 19.302
4 38.4629 45.08 2.68742try:f=open(‘‘nsor—data.txt’’,’’r’’)avg,cnt=0,0maxv,minv=0,9999for line in f:ls=line.split( )cnt+=1val=eval(ls[4])avg+=valif val>maxv:maxv=valif val<minv:minv=valprint(‘‘360wifi助手最大值、最小值、平均值分别是:{:.2f},{:.2f},{:.2f}’’\.format(maxv,minv,avg/cnt))f.clo( )except:orint(‘‘文件打开错误’’)