1.github地址
[github地址](https://github.com/b666666666666666b)
2.psp表格
![](https://img2018.cnblogs.com/blog/1330851/201909/1330851-20190917162303164-1419802546.png)
3.解题思路描述
即刚开始拿到题目后,我就想着用正则匹配数字、‘省’、‘市’等关键字,然后把他们丢到json里面,然后我就去复习了一下正则表达式的用法,还有怎么搞一个json文件出来。学完之后就开始用敲代码。敲完之后发现有可能出现省,市等关键词缺失的情况。然后我就去把省市信息的文件直接放在代码里,让程序去匹配名字。
4.设计实现过程
有一个类,类里面有九个函数,分别是:get_type,get_num,get_name,get_two_levels,get_xian,get_xiang,last_two_level,last_level,get_dic
流程图如下
5.计算模块接口部分的性能改进
说实话我没怎么去关注性能的改进,我觉得这次作业的主要矛盾是正确率,快不快已经不重要了,而且我也不具备性能改进的能力,能把正确率上去我就很满足了。性能分析图如下,我循环了十万次。
消耗最大的就是匹配省级和市级的函数get_two_levels
6.计算模块部分单元测试展示
单元测试使用python的unittest模块,具体代码如下
import unittest
from a import p_info
class TestDict(unittest.TestCase):
def test_num(self):
p = p_info()
p.num = 123
self.assertEqual(p.num, 123)
def test_name(self):
p = p_info()
p.name = '123'
self.assertEqual(p.name, '123')
def test_run_all(self):
file1 = open('test5.txt', 'r')
file2 = open('output5.txt', 'r')
for i, j in file1.readlines(), file2.readlines():
p = p_info()
p.run_all()
self.assertEqual(file2,p.res )
if __name__ == "__main__":
unittest.main()
7.计算模块部分异常处理说明
参考别人的博客写几个异常处理
(1)只有电话,没有地址
try:
twowords=string2[0:2]
except AttributeError:
print('没有输入地址')
输入1!雍厂赏,15578766416.时就不会发生错误
8.学习心得
这个作业有点难,害得我中秋都不能开开心心打游戏,勉强把作业做完了。