Python综合应用题.docx
《Python综合应用题.docx》由会员分享,可在线阅读,更多相关《Python综合应用题.docx(9页珍藏版)》请在冰豆网上搜索。
![Python综合应用题.docx](https://file1.bdocx.com/fileroot1/2023-1/3/c526bddf-67ba-47d9-8c62-e95fa5a4e3fe/c526bddf-67ba-47d9-8c62-e95fa5a4e3fe1.gif)
Python综合应用题
Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
Python综合应用题
1.《笑傲江湖》是金庸的重要武侠作品之一。
这里给出一个《笑傲江湖》的网络版本,文件名为“笑傲江湖-网络版.txt”。
问题1:
请编写程序,统计该文件中出现的所有中文字符及标点符号的数量,每个字符及数量之间用冒号:
分隔,例如“笑:
1024”,将所有字符及数量的对应采用逗号分隔,以CSV文件格式保存到“笑傲江湖-字符统计.txt”文件中。
注意,统计字符不包括空格和回车。
问题2:
请编写程序,统计“笑傲江湖-网络版.txt”中出现在引号内所有字符占文本总字符的比例,采用如下方式打印输出:
用程序运行结果的真实数字替换上述示例中数字,均保留整数,字符串中标点符号采用中文字符。
参考代码:
问题1
fi=open("笑傲江湖-网络版.txt","r",encoding='utf-8')
fo=open("笑傲江湖-字符统计.txt","w",encoding='utf-8')
txt=()
d={}
forcintxt:
d[c]=(c,0)+1
deld['']
deld['\n']
ls=[]
forkeyind:
("{}:
{}".format(key,d[key]))
(",".join(ls))
()
()
问题2
fi=open("笑傲江湖-网络版.txt","r",encoding='utf-8')
txt=()
cnt=0
flag=False
forcintxt:
ifc=="“":
flag=True
continue
ifc=="”":
flag=False
ifflag:
cnt+=1
print("占总字符比例:
{:
.0%}。
".format(cnt/len(txt)))
()
2.《射雕英雄传》是金庸的重要武侠作品之一。
这里给出一个《射雕英雄传》的网络版本,文件名为“射雕英雄传-网络版.txt”。
请编写程序,统计该文件出现的所有中文词语及出现次数(不要求输出),并输出按照出现次数最多的8个词语。
参考代码:
importjieba
fi=open("射雕英雄传-网络版.txt","r",encoding='utf-8')
txt=()
()
ls=(txt)
d={}
forwinls:
d[w]=(w,0)+1
forxin"\n,。
!
“”:
":
deld[x]
rst=[]
foriinrange(8):
mx=0
mxj=0
forjind:
ifd[j]>mx:
mx=d[j]
mxj=j
(mxj)
deld[mxj]
print(",".join(rst))
3.恺撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,即循环左移3位,对应关系如下:
原文:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:
DEFGHIJKLMNOPQRSTUVWXYZABC
基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],共20902个字符。
请以10451位循环移位数量,编写中文文本的类恺撒密码加解密方法。
原文字符P,其密文字符C满足如下条件:
C=(P+10451)mod20902
解密与加密方法一致,满足:
P=(C+10451)mod20902
标点符号、英文字母不加密。
参考代码:
s=input()
d={}
c=0x4e00
foriinrange(20902):
d[chr(i+c)]=chr((i+10451)%20902+c)
print("".join([(c,c)forcins]))
7.《神雕侠侣》是金庸先生在武侠小说创作上的一个里程碑,叙述杨过与小龙女之间的故事。
这里给出《神雕侠侣》的网络版本,文件名为“神雕侠侣-网络版.txt”。
《神雕侠侣》中出现了很多人物,这里给出6个人物名字:
杨过、小龙女、李莫愁、裘千尺、郭靖、黄蓉。
统计人物之间的关联关系,定义一种“亲和度”如下:
如果某名字后的100个词语出现另外任何一个人名,则该名字亲和度加1,如果之后不存在100个词语则停止检查。
参考代码:
importjieba
fi=open("神雕侠侣-网络版.txt","r",encoding='utf-8')
fo=open("神雕侠侣-人名亲和度.txt","w",encoding='utf-8')
names=["杨过","小龙女","李莫愁","裘千尺","郭靖","黄蓉"]
d={}
foritem1innames:
foritem2innames:
ifitem1!
=item2:
d[item1+"-"+item2]=0
txt=()
ls=(txt)
foriinrange(len(ls)-100):
ifls[i]innames:
forjinrange(1,101):
ifls[i+j]!
=ls[i]and(ls[i+j]innames):
d[ls[i]+'-'+ls[i+j]]+=1
break
ols=[]
forkeyind:
("{}:
{}".format(key,d[key]))
(",".join(ols))
#(",\n".join(ols))
()
()
4.1949年4月23日,中国人民解放军午夜解放南京,毛泽东同志在清晨获得消息后写下《七律人民解放军占领南京》,全文如下:
七律人民解放军占领南京
钟山风雨起苍黄,百万雄师过大江。
虎踞龙盘今胜昔,天翻地覆慨而慷。
宜将剩勇追穷寇,不可沽名学霸王。
天若有情天亦老,人间正道是沧桑。
问题1:
这是一段由标点符号分隔的文本,请编写程序,以标点符号为分隔,将这段文本转换为诗词风格。
问题2:
编写程序,以每半句为单位,保留标点符号为原顺序及位置。
输出格式
问题一输出:
每行30个字符,诗词居中,每半句一行,去掉所有标点。
输出到文件“七律.txt”。
问题二输出:
输出全文的翻转形式。
人间正道是沧桑,天若有情天亦老。
(略)
参考代码:
问题1
s="钟山风雨起苍黄,百万雄师过大江。
\
虎踞龙盘今胜昔,天翻地覆慨而慷。
\
宜将剩勇追穷寇,不可沽名学霸王。
\
天若有情天亦老,人间正道是沧桑。
"
lines=""
foriinrange(0,len(s),8):
lines+=s[i:
i+7].center(30)+'\n'
print(lines)
fo=open("七律.txt","w")
(lines)
()
问题2
s="钟山风雨起苍黄,百万雄师过大江。
\
虎踞龙盘今胜昔,天翻地覆慨而慷。
\
宜将剩勇追穷寇,不可沽名学霸王。
\
天若有情天亦老,人间正道是沧桑。
"
ls=[]
foriinrange(0,len(s),8):
(s[i:
i+7])
()
n=0
foriteminls:
n=n+1
ifn%2!
=0:
print(item,end=",")
else:
print(item,end="。
\n")
5.这里有一个中文文本片段:
“今天北京有个好天气,大家一起去爬山。
”该句子分上下两部分,以逗号和句号分隔。
请对该句子进行分词,并以8为随机种子,在上下半句分别重新排列组合词语,并组合输出10种不重复的可能。
输出格式
上下半句词语不交叉,每个可能的组合单行输出,存储到“句子组合.txt”文件中,格式如下:
北京今天有个好天气,一起大家去爬山。
有个好天气今天北京,一起大家爬山去。
参考代码:
importjieba
importrandom
s="今天北京有个好天气,大家一起去爬山。
"
k=(',')
s1=(s[0:
k])
s2=(s[k+1:
-1])
(8)
lines=[]
whileTrue:
line=""
(s1)
(s2)
foritemins1:
line+=item
line+=","
foritemins2:
line+=item
line+="。
"
iflineinlines:
continue
else:
(line)
iflen(lines)==10:
break
f=open("句子组合.txt","w")
("\n".join(lines))
()
6.大胆预测2018年至2020年我国五个城市的房产价格走势如下所示,同时保存为“”文件。
其中,2018/2019/2020年所列出的数值为当前年份与前一年份的涨跌比。
例如,2018列数据是预测2018年房价以2017年价格为基数(100)的比值,2019列数据是预测2019年房价以2018年价格为基数(100)的比值,2020列数据是预测2020年房价以2019年价格为基数(100)的比值。
城市201820192020
北京112130140
上海123140121
广州9995130
深圳10112994
沈阳939287
请编写程序,以2017年为基数,预测2018/2019/2020年房价涨跌比,生成一个类似文件,名称为“”,保留整数。
参考代码:
fi=open("","r",encoding="utf-8")
fo=open("","w",encoding="utf-8")
ls=[]
forlineinfi:
line=("\n","")
(","))
foriinrange(1,len(ls)):
forjinrange(1,len(ls[i])):
ifls[i][j].isnumeric():
ifj==1:
base=100
else:
base=float(ls[i][j-1])
ls[i][j]="{:
.0f}".format(base*float(ls[i][j])/100)
forrowinls:
(",".join(row)+"\n")
()
()
7.《天龙八部》是着名作家金庸的代表作之一,历时4年创作完成。
该作品气势磅礴,人物众多,非常经典。
这里给出一个《天龙八部》的网络版本,文件名为“天龙八部-网络版.txt”。
问题1:
请编写程序,对这个《天龙八部》文本中出现的汉字和标点符号进行统计,字符与出现次数之间用冒号:
分隔,输出保存到“天龙八部-汉字统计.txt”文件中,该文件要求采用CSV格式存储,参考格式如下(注意,不统计空格和回车字符):
天:
100,龙:
110,八:
109,部:
10
问题2:
请编写程序,对《天龙八部》文本中出现的中文词语进行统计,采用jieba库分词,词语与出现次数之间用冒号:
分隔,输出保存到“天龙八部-词语统计.txt”文件中。
参考格式如下(注意,不统计任何标点符号):
天龙:
100,八部:
10.
参考代码1
fi=open("天龙八部-网络版.txt","r",encoding='utf-8')
fo=open("天龙八部-汉字统计.txt","w",encoding='utf-8')
txt=()
d={}
forcintxt:
d[c]=(c,0)+1
deld['']
deld['\n']
ls=[]
forkeyind:
("{}:
{}".format(key,d[key]))
(",".join(ls))
()
()
参考代码2
importjieba
fi=open("天龙八部-网络版.txt","r",encoding='utf-8')
fo=open("天龙八部-词语统计.txt","w",encoding='utf-8')
txt=()
words=(txt)
d={}
forwinwords:
d[w]=(w,0)+1
deld['']
deld['\n']
ls=[]
forkeyind:
("{}:
{}".format(key,d[key]))
(",".join(ls))
()
()