国家二级Python(综合应用题)模拟试卷4 (题后含答案及解析)
全部题型    4. 综合应用题
综合应用题
1. 《侠客行》是金庸的重要武侠作品之一,主要叙述一个懵懂少年石破天的江湖经历。这里给出一个《侠客行》的网络版本,文件名为“侠客行一网络版.txt”。基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定文本中存在多少该范围内的基础中文字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客行一字符统计.txt”文件中。侠(0x4fa0):888,客(0x5ba2):666,行(0x884c):111(略)其中括号内是对应字符的十六进制Unicode编码形式,冒号后是出现次数,逗号两侧无空格。
正确答案:参考程序:fi=open(‘‘侠客行一网络版.txt’’’’r’’,encoding=unf-8)fo=open(‘‘sort out什么意思中文意思侠客行一字符统计.txt’’’’w’’,encoding=utf-8)txt=fi.read(  )d={}for c in txt:if 0x4e00<=ord(c)<=0x9fa5:d[c]=d.get(c,0)+1ls=[]for key in d:ls.append(‘‘{}(0x{:x}):{}’’.format(key,ord(key),d[key]))fo.write(‘‘’’.join(ls))fi.close(  )fo.close(  ) 
2. 《神雕侠侣》是金庸先生在武侠小说创作上的一个里程碑,叙述杨过与小龙女之间的故事。这里给出《神雕侠侣》的网络版本,文件名为“神雕侠侣一网络版.txt”。《神雕侠侣》中出现了很多人物,这里给出6个人物名字:杨过、小龙女、李莫愁、裘千尺、郭靖、黄蓉。统计人物之间的关联关系,这里定义一种“亲和度”关系如下:如果某名字A后的100个中文词语中出现上述6个名字中任何一个B,则名字A的亲和度加1。(注意,如果到文本末尾部分,名字A后没有100个中文词语,则有多少算多少)请输出每个名字的亲和度,保存文件名为“神雕侠侣一人名亲和度.txt”如下:杨过一小龙女:1024,杨过一李莫愁:20,(略),小龙女一杨过:2014(略)
正确答案:参考程序:import jiebafi=open(‘‘神雕侠侣一网络版.txt’’’’r’’,encoding=uff一8)fo=open(‘‘神雕侠侣一人名亲和度.txt’’’’w’’,encoding=utf一8)names=[‘‘杨过’’’’小龙女’’’’李莫愁’’’’裘千尺’’’’郭靖’’’’黄蓉’’]d={}for iteml in names:for item2 in names:if iteml!=item2:d[iteml+’’’’+item2]=0txt=fi.read(  )ls=jieba.lcut(txt)for i in range(len(ls)一100):if ls[i]in names:for j in range(1,101):if Is[i+j]!=Is[i]and(Is[i+j]in names):d[Is[i]++ls[i+j]]+=1breakols=[]for key in d:ols.append(‘‘{}:{}’’.format(key,d[key]))fo.write(‘‘,\n’’.join(ols))fi.close(  )fo.close(  ) 
3. 苏格拉底是古希腊著名的思想家、哲学家、教育家、公民陪审员。苏格拉底的名言部分被翻译为中文,部分内容分词结果由文件sgldout.txt给出。对文件sgldout.txt进行分析,输出词频排名前五的词(不包括中文标点符号)和次数到文件sgldstatistics.txt。参照输出格式如下:了:234的:234有:234你:234我:234请完善代码。#在……完善一段代码fo=open(‘‘sgldout.txt’’’’r’’,encoding=‘‘utf一8’’)words=fo.readlines(  )fo.close(  )
正确答案:参考程序:fo=open(‘‘sgldout.txt’’’’r’’,encoding=utf一8’’)words=fo.readlines(  )fo.close(  )sym=‘‘:。,“”:’’DictWords={}for ls in words:if ls[:一1]not in sym:DictW0rd8[ls[:一1]]=DictWords.get(ls[:一1],0)+1L=list(DictWords.items(  ))L.sort(key=lambda s:s[1],reverse=True)#输出到文件fo=open(‘‘sgldstatistics.txt’’’’w’’,encoding=utf一8’’)for i in range(5):fo.writelines(L[i][0]+’’’’+str(L[i][1])+’’\n’’)fo.close(  ) 
4. 算法平均数蕴含了“重心”的意思,中位数用于概括一组数据的位置,是高度耐抗的,有个别的极大值或者极小值,不会引起中位数的变化。在numbers.txt中给出了100个人的某月收入(单位:元),求100人月收入的算术平均数和中位数并参照如下格式输出:算术平均数为3428.96。中位数为3966.5。
正确答案:参考程序:def Arithmetic(numbers):    #计算算法平均数sum=0.0for i in numbers:sum=sum+float(i)return sum/len(numbers)def Median(numbers):    #计算中位数sorted(numbers)size=len(numbers)med=(float(numbers[size//2-1])+float(numbers[size//2]))/2else:med=numbers[size//2]return medfo=open(‘‘numbers.txt’’’’r’’,encoding=‘‘utf一8’’)ls=[]for line in fo.readlines(  ):line=line.replace(‘‘\n’’’’’’)ls.append(line)print(‘‘算术平均数为{}。’’.format(Arithmetic(ls)))print(‘‘中位数为{}。’’.format(Median(ls))) 
5. 《孙子兵法》是我国军事学的重要历史名著之一,从网络上能够获得《孙子兵法》的一个版本“孙子兵法一网络版.txt”。请对该文档进行清洗,去掉带有“作者”的行,去掉带有注释(解释信息)的行,在正文中,去掉①②等注释标注,将清洗后的文本输出为“孙子兵法一清洗版.txt”。
正确答案:参考程序:fi=open(‘‘孙子兵法一网络版.txt’’’’r’’)fo=open(‘‘孙子兵法一清洗版.txt’’’’w’’)for line in fi:if’’作者’’in line:continueif’’’’ in line:continuefor c in’’①②③’’:line=line.replace(c,’’’’)fo.write(line)fi.close(  )fo.close(  ) 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。