【Python二级】政府工作报告两问

编程入门 行业动态 更新时间:2024-10-18 14:25:30

【Python二级】<a href=https://www.elefans.com/category/jswz/34/1453149.html style=政府工作报告两问"/>

【Python二级】政府工作报告两问

题目描述:

该题目共二个问题,分成两道题分别作答。2 个文本文件分别摘自2019年和2018年的政府工作报告。请在右侧代码框中个源文件 ,实现以下功能‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

本题解答问题1‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

问题1 :数据统计。要求: 统计出两个文件中出现次数最多的10 个词语,作为主题词,要求词语不少于2个字符,打印输出在屏幕上,输出示例如下:(示例仅作为示意)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2019:改革:10,企业:9,…(略),深化:2‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2018:改革:11,效益,7,…(略),深化:1‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语间用逗号分隔,最后一个词语后无逗号。

import jieba
d={}
d2019={}
fo=open('政府工作报告2018.txt','r',encoding='utf-8')
fi=open('政府工作报告2019.txt','r',encoding='utf-8')for line in fi.readlines():m=jieba.lcut(line.strip('\n'))for k in m:if len(k)>=2:d2019[k]=d2019.get(k,0)+1
lt = list(d2019.items())
lt.sort(key = lambda x:x[1],reverse = True)
print('2019:',end='')
for i in range(10):if i+1 <10:print('{}:{},'.format(lt[i][0],lt[i][1]),end='')else:print('{}:{}'.format(lt[i][0],lt[i][1]),end='')
print('')
for line in fo.readlines():m=jieba.lcut(line.strip('\n'))for k in m:if len(k)>=2:d[k]=d.get(k,0)+1
lt = list(d.items())
lt.sort(key = lambda x:x[1],reverse = True)
print('2018:',end='')
for i in range(10):if i+1 <10:print('{}:{}'.format(lt[i][0],lt[i][1]),end=',')else:print('{}:{}'.format(lt[i][0],lt[i][1]),end='')

笔者的方式比较繁琐,大家可以看一看,这里作简要说明:
首先是去遍历这个两个文件,然后分词,然后用字典方法计算个数。再用列表的sort方法进行排序。然后再用range(10)来遍历前十个,再就是输出。输出要特别注意,因为有提到最后不能以逗号结尾,所以还要用if i+1< 10来判断一下是否是最后一行,不是的话就以逗号结尾。

再介绍以下答案的简洁代码:

import jiebadef getWords(fn):fi = open(fn, 'r', encoding='utf-8')ls = jieba.lcut(fi.read())d = {}for l in ls:if len(l) >= 2:d[l] = d.get(l, 0) + 1lt = list(d.items())lt.sort(key=lambda x: x[1], reverse=True)return ltdef showWords(li, year, num=10):print('{}:'.format(year), end='')for i in range(num):k, v = li[i]if i < num - 1:print('{}:{}'.format(k, v), end=',')else:print('{}:{}'.format(k, v))ls2019 = getWords('政府工作报告2019.txt')
ls2018 = getWords('政府工作报告2018.txt')showWords(ls2019, 2019)
showWords(ls2018, 2018)

这里定义了两个函数,第一个函数用来分词以及排序,参数是文件名,返回值是排好了顺序的列表。第二个函数用来输出的,参数是排好了序的列表,年份,以及10,10用来给排好序的列表遍历出前10个元组,然后把每个元组里的两个元素赋值给k,v,分别是分的词和词频。然后输出时候也是作一个判断,用 if i <num-1,如果是最后一个就没有逗号,如果不是就有逗号。
然后再调用上面的排序以及输出函数。

第二问

问题2: 数据关联。要求:修改右侧代码框中代码,对比两组主体词的差异,输出两组的共有词语和分别的特有词语,输出示例如下:(示例词语费答案)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

共有词语:改革,…(略),深化‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2019 特有:企业,…(略),加强‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2019 特有:效益,…(略),创新‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语间用逗号分隔,最后一个词语后无逗号。

import jieba
def getwords(fname):d={}fo=open(fname,'r',encoding='utf-8')for line in fo.readlines():m=jieba.lcut(line.strip('\n').strip())for k in m:if len(k)>=2:d[k]=d.get(k,0)+1lt = list(d.items())lt.sort(key = lambda x:x[1],reverse = True)tpc={}for i in range(10):tpc[lt[i][0]]=lt[i][1]return tpc
tpsl2019=getwords('政府工作报告2019.txt')
tpsl2018=getwords('政府工作报告2018.txt')
cmm={}
t2019={}
for each in tpsl2019:if each in tpsl2018:cmm[each]=tpsl2019[each]tpsl2018.pop(each)else:t2019[each]=tpsl2019[each]
print('共有词语:',end='')
print(','.join(list(cmm.keys())))
print('2019特有:',end='')
print(','.join(list(t2019.keys())))
print('2018特有:',end='')
print(','.join(list(tpsl2018.keys())))

简要说明一下:也是和第一问类似,定义一个函数,参数是读取的文件名,去分词、排序、遍历出前十个,如出一辙,但是我把这10个元组值以键值对形式放在一个字典里,然后返回值是这个字典。然后通过调用函数,得到2019年与2018年的分词与词频的键值对组成的字典。
去用each遍历2019年的字典,如果 它也在2018年的字典里,就把它放入cmm这个新字典代表共同的,然后再把这个相同的元素从2018字典里摘出去,这样2018字典里剩下的就是它特有的。
如果2018字典里没有,那就是2019字典特有的,就把它放到t2019这个新字典里。
然后我们就有了“共同元素字典”、“2019特有词字典”、“2018特有词字典”,再用’,'.join(list(d.keys()))方式分别输出出来。

更多推荐

【Python二级】政府工作报告两问

本文发布于:2024-02-24 14:50:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1695666.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:政府工作报告   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!