Skip to content

Commit 6cb31ea

Browse files
excaliburyyzrmqfdy
authored andcommitted
19100304 day8
1 parent 03b61f0 commit 6cb31ea

File tree

3 files changed

+66
-74
lines changed

3 files changed

+66
-74
lines changed

19100304/excaliburyy/main.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1+
# 19100304 day8 银零
2+
# 1.调用 stats_word 中的任何一个函数,参数穿入非字符串,验证参数检查功能是否有效
3+
# 2.调用 stats_word 的地方加上 try...except 捕获异常,通过 print 打出方便自己调试的提示信息,让程序正常运行完毕。
4+
15
# 19100304 day7 银零
26
# 1.通过模块导入 stats_word, 调用 stats_text 函数统计字符串样本中中文汉字和英文单词出现的次数
37
# 2.将结果打印出来
48

59

610

711
import sys #导入模块sys
8-
sys.path.append('D:/Documents/GitHub/selfteaching-python-camp/19100304/excaliburyy/mymodule/') #确定解释器的模块搜索路径至mymodule文件夹
12+
sys.path.append(r'D:/Documents/GitHub/selfteaching-python-camp/19100304/excaliburyy/mymodule/') #确定解释器的模块搜索路径至mymodule文件夹
913
import stats_word #导入模块 stats_word
1014

1115
# 直接从pdf文档复制中文文字会出现乱码,解决方法暂时有两个:
@@ -61,5 +65,21 @@
6165
Filled with admiration for Yugong, the Emperor of Heavens ordered two mighty gods to carry the mountains away.
6266
'''
6367

64-
stats_text(text)
68+
# 1.调用 stats_word 中的任何一个函数,参数穿入非字符串,验证参数检查功能是否有效(day8)
69+
70+
# :已验证,有效。
71+
72+
73+
# 2.调用 stats_word 的地方加上 try...except 捕获异常,通过 print 打出方便自己调试的提示信息,让程序正常运行完毕。(day8)
74+
75+
try:
76+
stats_word.stats_text(1)
77+
except ValueError:
78+
print(ValueError)
79+
80+
81+
82+
83+
84+
6585

Lines changed: 44 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,52 @@
1-
# 19100304 day6 银零
2-
#【assignment1:封装统计英文单词词频的函数】
3-
#【assignment2:封装统计中文汉字字频的函数】
1+
# 19100304 day8 银零
2+
# 为 my.module 下 stats_word.py 中的三个个函数添加参数类型检查,如果输入参数不为字符串类型则抛出 ValueError 错误,并包含完整的错误提示信息
43

4+
# 19100304 day7 银零
5+
# 1.定义 stats_text 函数,实现功能:分别调用stats_text_en, stats_text_cn, 输出合并词频统计结果
6+
# 2.为 stats_text 添加注释说明
57

68

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-
'''
289

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+
# 这是一个封装统计英文单词词频的函数,并按词频降序排列数组
4411

4512
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+
# 这是一个封装统计中文汉字字频的函数,并按字频降序排列数组
6429

6530
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('输入值不是字符串')

19100304/excaliburyy/practice.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)