国家二级Python(综合应用题)模拟试卷4
综合应用题
1.《侠客行》是金庸的重要武侠作品之一,主要叙述一个懵懂少年石破天的江湖经历。这里给出一个《侠客行》的网络版本,文件名为“侠客行一网络版.txt”。
基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定文本中存在多少该范围内的基础中文字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客行一字符统计.txt”文件中。
侠(0x4fa0):888,客(0x5ba2):666,行(0x884c):111
(略)
其中括号内是对应字符的十六进制Unicode编码形式,冒号后是出现次数,逗号两侧无空格。
参考程序:
fi=open(’’侠客行一网络版.txt’’,’’r’’,encoding=’unf-8’)
fo=open(’’侠客行一字符统计.txt’’,’’w’’,encoding=’utf-8’)
txt=fi.read()
d={}
for c in txt:
if 0x4e00<=ord(c)<=0x9fa5:
d[c]=d.get(c,0)+1
ls=[]
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 jieba
fi=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]=0
txt=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]]+=1
break
ols=[]
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)+1
L=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.0
for 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]))/2
else:
med=numbers[size//2]
return med
fo=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(Media
本文档预览:3600字符,共4103字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载