首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

PTA-Python-第7章-1 词频统计 (30分)

  • 24-03-03 00:23
  • 2092
  • 7377
blog.csdn.net

点击链接PTA-Python-AC全解汇总

题目:
请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。

所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。

输入格式:
输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。

输出格式:
在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。

随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。

输入样例:

This is a test.

The word "this" is the word with the highest frequency.

Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee.  But this_8 is different than this, and this, and this...#
this line should be ignored.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出样例:(注意:虽然单词 the 也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序, the 排第3位,所以不输出。)

23
5:this
4:is
  • 1
  • 2
  • 3

我的思路:
一行行读取数据,这行出现了#则停止;
每一行把除了字母、数字、#、_以外的所有字符全部替换成空格;
截取这一行#前面的部分(没有则整行);
然后再用split隔开所有单词;
把单词统计到dict:word_times里;

所有行结束后,根据value降序排序,输出前面10%个;
但是不知道为什么我注释的那行写法不行,两个case过不去,求大佬指点!

我的代码:

word_times=dict()
cnt_word=0
flag=True
while flag:
    string = input()
    string = string.lower()
    flag = string.find("#")==-1
    for x in string:
        if x.isalnum()==False and x!="_" and x!="#":
            string = string.replace(x, " ")#全部用" "隔开
    string = string.split("#")[0].split()#只要#前面的
    for i in range(len(string)):
        if string[i]!="":
            string[i]=string[i][:15]
            if string[i] in word_times.keys():
                word_times[string[i]]+=1
            else:
                word_times[string[i]]=1
                cnt_word+=1
# 不知道为什么这样写后两个case会错误
# word_times=sorted(word_times.items(),key=lambda x:x[1],reverse=True)
word_times=sorted(word_times.items(),key=lambda x:(-x[1],x[0]))
print(cnt_word)
for i in range(cnt_word//10):
    print("%s:%s"%(word_times[i][1],word_times[i][0]))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
注:本文转载自blog.csdn.net的邂逅模拟卷的文章"https://blog.csdn.net/qq_34451909/article/details/107951561"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top