A23177. 状态关键词小李将一个月内某平台上每天的状态关键词(美滋滋、忙、疲惫......)保存在了文本文件"state.txt"中,现在他编写了一个Python程序,用来统计一个月内出现次数最多的状态关键词及次数,如果有多个状态关键词并列最多,则输出第一个。具体思路如下:(1)将文本文件中的状态关键词通过jieba模块进行分词,并保存在列表中; 分词结果: ['美滋滋', '裂开', '运动', '疲惫'…
题目描述
状态关键词
小李将一个月内某平台上每天的状态关键词(美滋滋、忙、疲惫......)保存在了文本文件"state.txt"中,现在他编写了一个Python程序,用来统计一个月内出现次数最多的状态关键词及次数,如果有多个状态关键词并列最多,则输出第一个。
具体思路如下:
(1)将文本文件中的状态关键词通过jieba模块进行分词,并保存在列表中;
分词结果:
['美滋滋', '裂开', '运动', '疲惫', '发呆', '冲', '学习', '学习', '胡思乱想', '忙', '元气', '美滋滋', '美滋滋', '美滋滋', '美滋滋', '美滋滋', '裂开', '运动', '疲惫', '发呆', '冲', '胡思乱想', '元气', '裂开', '运动', '忙', '美滋滋', '美滋滋', '发呆', '摸鱼', '回家']
(2)通过字典统计每个状态关键词的出现次数;
(3)通过比较,找出出现次数最多的状态关键词。
输出结果:
出现最多的状态是: 美滋滋 次数为: 8
实现上述功能的Python程序如下,请在划线处填入合适的代码。
"""
import jieba
txt=open("/data/state.txt","r",encoding="utf-8").read()
words=jieba.______ ① ________ (txt) #jieba模块分词的结果存放在列表中
"""
words=['美滋滋', '裂开', '运动', '疲惫', '发呆', '冲', '学习', '学习', '胡思乱想', '忙', '元气', '美滋滋', '美滋滋', '美滋滋', '美滋滋', '美滋滋', '裂开', '运动', '疲惫', '发呆', '冲', '胡思乱想', '元气', '裂开', '运动', '忙', '美滋滋', '美滋滋', '发呆', '摸鱼', '回家']
maxlen=1 #变量maxlen存放最多出现次数
maxd=0 #变量maxd存放最多出现次数的状态关键词在列表中的位置
dic={} #字典dic存放每个状态关键词及其出现次数
i=0
while i<len(words):
if words[i] not in dic:
______ ② _______
else:
dic[words[i]]+=1
if ______③_______ :
maxd=i
maxlen=dic[words[i]]
i+=1
print("出现最多的状态是:", ______④_______ ,"次数为:",maxlen)参考答案
"""
import jieba
txt=open("/data/state.txt","r",encoding="utf-8").read()
words=jieba.lcut(txt) #jieba模块分词,lcut方法分词结果存放在列表中
"""
words=['美滋滋', '裂开', '运动', '疲惫', '发呆', '冲', '学习', '学习', '胡思乱想', '忙', '元气', '美滋滋', '美滋滋', '美滋滋', '美滋滋', '美滋滋', '裂开', '运动', '疲惫', '发呆', '冲', '胡思乱想', '元气', '裂开', '运动', '忙', '美滋滋', '美滋滋', '发呆', '摸鱼', '回家']
maxlen=1 #变量maxlen存放最多出现次数
maxd=0 #变量maxd存放最多出现次数的状态关键词在列表中的位置(索引)
dic={} #创建空字典,用来存放状态关键词和次数
i=0
while i<len(words): #遍历列表中的关键词,变量i为关键词的索引
if words[i] not in dic: #如果关键词未在字典中,增加一个键值对,次数初始值为1
dic[words[i]]=1
else:
dic[words[i]]+=1 #如果关键词已经在字典中,更新次数的值
if dic[words[i]]>maxlen: #比大小,更新变量maxd和maxlen
maxd=i
maxlen=dic[words[i]]
i+=1
print("出现最多的状态是:",words[maxd],"次数为:",maxlen)
#出现最多的状态关键词需要去列表中获取答案解析
评分标准:
(1)lcut 或等效答案;(2分)
(2)dic[words[i]]=1 或等效答案;(3分)
(3)dic[words[i]]>maxlen 或等效答案;(3分)
(4)words[maxd] 或等效答案。(2分)