(软工实践)第一次个人编程作业

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.学习心得

这个作业有点难,害得我中秋都不能开开心心打游戏,勉强把作业做完了。
原文地址:https://www.cnblogs.com/menmamizigeda/p/11521436.html