|
1 |
| -# 19100304 day6 银零 |
2 |
| -#【assignment1:封装统计英文单词词频的函数】 |
3 |
| -#【assignment2:封装统计中文汉字字频的函数】 |
| 1 | +# 19100304 day8 银零 |
| 2 | +# 为 my.module 下 stats_word.py 中的三个个函数添加参数类型检查,如果输入参数不为字符串类型则抛出 ValueError 错误,并包含完整的错误提示信息 |
4 | 3 |
|
| 4 | +# 19100304 day7 银零 |
| 5 | +# 1.定义 stats_text 函数,实现功能:分别调用stats_text_en, stats_text_cn, 输出合并词频统计结果 |
| 6 | +# 2.为 stats_text 添加注释说明 |
5 | 7 |
|
6 | 8 |
|
7 |
| -text_en = ''' |
8 |
| -Beautiful is better than ugly. |
9 |
| -Explicit is better than implicit. |
10 |
| -Simple is better than complex. |
11 |
| -Complex is better than complicated. |
12 |
| -Flat is better than nested. |
13 |
| -Sparse is better than dense. |
14 |
| -Readability counts. |
15 |
| -Special cases aren't special enough to break the rules. |
16 |
| -Although practicality beats purity. |
17 |
| -Errors should never pass silently. |
18 |
| -Unless explicitly silenced. |
19 |
| -In the face of ambiguity, refuse the temptation to guess. |
20 |
| -There should be one-- and preferably only one --obvious way to do it. |
21 |
| -Although that way may not be obvious at first unless you're Dutch. |
22 |
| -Now is better than never. |
23 |
| -Although never is often better than right now. |
24 |
| -If the implementation is hard to explain, it's a bad idea. |
25 |
| -If the implementation is easy to explain, it may be a good idea. |
26 |
| -Namespaces are one honking great idea -- let's do more of those! |
27 |
| -''' |
28 | 9 |
|
29 |
| -text_cn = ''' |
30 |
| -PHP 是你的豆蔻年华的心上人,她是情窦初开的你今年夏天傻乎乎的追求的目标。玩一玩可以,但千万不要投入过深,因为这个女孩有严重的问题。 |
31 |
| -Ruby 是脚本家族中一个非常漂亮的孩子。第一眼看她,你的心魄就会被她的美丽摄走。她还很有有趣。起初她看起来有点慢,不怎么稳定,但近些年来她已经成熟了很多。 |
32 |
| -Python 是 Ruby 的一个更懂事的姐姐。她优雅,新潮,成熟。她也许太过优秀。很多小伙都会说“嘿,兄弟,你怎么可能不爱上 Python 呢!?”。没错,你喜欢 Python。你把她当成了一个脾气和浪漫都退烧了的 Ruby。 |
33 |
| -Java 是一个事业成功的女人。很多在她手下干过的人都感觉她的能力跟她的地位并不般配,她更多的是通过技巧打动了中层管理人员。你也许会认为她是很有智慧的人,你愿意跟随她。但你要准备好在数年里不断的听到“你用错了接口,你遗漏了一个分号”这样的责备。 |
34 |
| -C++ 是 Java 的表姐。她在很多地方跟 Java 类似,不同的是她成长于一个天真的年代,不认为需要使用“保护措施”。当然,“保护措施”是指自动内存管理。你以为我指的是什么? |
35 |
| -C 是 C++ 的妈妈。对一些头发花白的老程序员说起这个名称,会让他们眼睛一亮,产生无限回忆。 |
36 |
| -Objective C C 语言家族的另外一个成员。她加入了一个奇怪的教会,不愿意和任何教会之外的人约会。 |
37 |
| -''' |
38 |
| - |
39 |
| - |
40 |
| -#【assignment1:封装统计英文单词词频的函数】 |
41 |
| -# 1.定义一个名为 stats_text_en 的函数,函数接受一个字符串为参数 |
42 |
| -# 2.实现该函数的功能(同day5 任务2):统计参数中每个英文单词出现的次数,最后返回一个按词频降序排列的数组 |
43 |
| -# 3.为 stats_text_en 添加注释说明 |
| 10 | +# 这是一个封装统计英文单词词频的函数,并按词频降序排列数组 |
44 | 11 |
|
45 | 12 | def stats_text_en(string):
|
46 |
| - import re #导入正则表达式模块 |
47 |
| - list1 = re.split(r'\W+',string) #将字符串转换为列表list1,只保留单词为list1中的元素 |
48 |
| - while '' in list1: #删除list1中为空的元素 |
49 |
| - list1.remove('') |
50 |
| - dict1 = {} #建立空的字典 |
51 |
| - for i in list1: #i属于list1中的元素,开始循环 |
52 |
| - dict1.setdefault(i,list1.count(i)) #将列表中的单词及单词的出现次数,分别赋值给dict1的键和值 |
53 |
| - tup1 = sorted(dict1.items(),key = lambda items:items[1],reverse = True) #将dict1按照value值从大到小排列,并将结果赋值给元祖tup1 |
54 |
| - return tup1 #返回tup1的值 |
55 |
| - |
56 |
| -result = stats_text_en(text_en) |
57 |
| -print(result,end='\n\n') |
58 |
| - |
59 |
| - |
60 |
| -#【assignment2:封装统计中文汉字字频的函数】 |
61 |
| -# 1.定义一个名为 stats_text_cn 的函数,函数接受一个字符串为参数 |
62 |
| -# 2.实现该函数的功能:统计参数中每个中文汉字出现的次数,最后返回一个按字频降序排列的数组 |
63 |
| -# 3.为 stats_text_cn 添加注释说明 |
| 13 | + if type(string) == str: #检查输入值是否为字符串类型 |
| 14 | + import re #导入正则表达式模块 |
| 15 | + list1 = re.split(r'\W+',string) #将字符串转换为列表list1,只保留单词为list1中的元素 |
| 16 | + while '' in list1: #删除list1中为空的元素 |
| 17 | + list1.remove('') |
| 18 | + dict1 = {} #建立空的字典 |
| 19 | + for i in list1: #i属于list1中的元素,开始循环 |
| 20 | + dict1.setdefault(i,list1.count(i)) #将列表中的单词及单词的出现次数,分别赋值给dict1的键和值 |
| 21 | + tup1 = sorted(dict1.items(),key = lambda items:items[1],reverse = True) #将dict1按照value值从大到小排列,并将结果赋值给元祖tup1 |
| 22 | + print(tup1) |
| 23 | + return tup1 #输出tup1的值 |
| 24 | + else: #若输入值不是字符串类型 |
| 25 | + raise ValueError('输入值不是字符串') |
| 26 | + |
| 27 | + |
| 28 | +# 这是一个封装统计中文汉字字频的函数,并按字频降序排列数组 |
64 | 29 |
|
65 | 30 | def stats_text_cn(string):
|
66 |
| - import re #导入正则表达式模块 |
67 |
| - result_cn_interpunction = re.sub('[^\u4e00-\u9fa5]','',string) #提取中文字符串 |
68 |
| - string = string.replace(' ','').replace('\n','')#删除空元素与换行元素 |
69 |
| - list1 = re.split('',string) #将字符串转换为列表list1 |
70 |
| - dict1 = {} #建立空的字典 |
71 |
| - for i in list1: #i属于list1中的元素,开始循环 |
72 |
| - dict1.setdefault(i,list1.count(i)) #将列表中的汉字及汉字的出现次数,分别赋值给dict1的键和值 |
73 |
| - tup1 = sorted(dict1.items(),key = lambda items:items[1],reverse = True) #将dict1按照value值从大到小排列,并将结果赋值给元祖tup1 |
74 |
| - return tup1 #返回tup1的值 |
75 |
| - |
76 |
| -result = stats_text_cn(text_cn) |
77 |
| -print(result) |
78 |
| - |
79 |
| - |
| 31 | + if type(string) == str: #检查输入值是否为字符串类型 |
| 32 | + import re #导入正则表达式模块 |
| 33 | + result_cn_interpunction = re.sub('[^\u4e00-\u9fa5]','',string) #提取中文字符串 |
| 34 | + string = string.replace(' ','').replace('\n','')#删除空元素与换行元素 |
| 35 | + list1 = re.split('',string) #将字符串转换为列表list1 |
| 36 | + dict1 = {} #建立空的字典 |
| 37 | + for i in list1: #i属于list1中的元素,开始循环 |
| 38 | + dict1.setdefault(i,list1.count(i)) #将列表中的汉字及汉字的出现次数,分别赋值给dict1的键和值 |
| 39 | + tup1 = sorted(dict1.items(),key = lambda items:items[1],reverse = True) #将dict1按照value值从大到小排列,并将结果赋值给元祖tup1 |
| 40 | + print(tup1) #输出tup1的值 |
| 41 | + else: #若输入值不是字符串类型 |
| 42 | + raise ValueError('输入值不是字符串') |
| 43 | + |
| 44 | + |
| 45 | +# 定义 stats_text 函数,功能是分别调用 stats_text_en 与 stats_text_cn 函数并合并输出词频统计结果 |
| 46 | + |
| 47 | +def stats_text(string): |
| 48 | + if type(string) == str: #检查输入值是否为字符串类型 |
| 49 | + stats_text_en(string) |
| 50 | + stats_text_cn(string) |
| 51 | + else: #若输入值不是字符串类型 |
| 52 | + raise ValueError('输入值不是字符串') |
0 commit comments