状态关键词
小李将一个月内某平台上每天的状态关键词(美滋滋、忙、疲惫......)保存在了文本文件"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)
相似题推荐
埃氏筛中将内层循环从j = i*i 开始而不是j = 2*i 的主要原因是()。
def eratosthenes_sieve_for(n): if n < 2: return [] is_composite = [False] * (n + 1) primes = [] for i in range(2, n + 1): if is_composite[i]: continue primes.append(i) # 用for循环模拟C++的 j = i*i; j <=n; j +=i for j in range(i * i, n + 1, i): is_composite[j] = True return primes
| A. 因为2*i 一定不是合数 |
B. i*i 一定是质数 |
| C. 小于i*i 的i 的倍数已被更小质因子筛过 |
D. 这样可以把时间复杂度降为O(n) |
对如下代码实现的欧几里得算法(辗转相除法),调用gcd(48 , 18) 得到的调用序列为()。
def gcd(a, b): if b == 0: return a else: return gcd(b, a % b)
| A.gcd(48 ,18) -> gcd(18 ,12) -> gcd(12 ,6) -> gcd(6 ,0) | B.gcd(48 ,18) -> gcd(30 ,18) -> gcd(12 ,18) |
| C.gcd(48 ,18) -> gcd(18 ,30) -> gcd(30 ,6) | D.gcd(48 ,18) -> gcd(12 ,18) -> gcd(6 ,12) |
下面代码用分治求“最大连续子段和”,其时间复杂度为()。
import sys def solve(a , l , r): if l == r: return a [l] mid = l + (r - l) // 2 left = solve(a , l , mid) right = solve(a , mid + 1 , r) sum_val = 0 lmax = -sys .maxsize - 1 for i in range(mid , l - 1 , -1): sum_val += a [i] lmax = max (lmax , sum_val) sum_val = 0 rmax = -sys .maxsize - 1 for i in range(mid + 1 , r + 1): sum_val += a [i] rmax = max (rmax , sum_val) return max(left , right , lmax + rmax) if __name__ == "__main__": a1 = [-2 , 1 , -3 , 4 , -1 , 2 , 1 , -5 , 4] print(solve(a1 , 0 , len(a1)-1)) a2 = [-5 , -3 , -1 , -4] print(solve(a2 , 0 , len(a2)-1)) a3 = [10] print(solve(a3 , 0 , 0))
| A. O(n2) |
B. O(nlogn) |
| C. O(logn) |
D. O(n) |
