代码改变世界

第一次个人编程作业

2019-09-17 18:06  cys233  阅读(195)  评论(3编辑  收藏  举报

1.Github地址

2.psp表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 30
Estimate 估计这个任务需要多少时间 30 30
Development 开发 720 640
Analysis 需求分析 (包括学习新技术) 240 240
Design Spec 生成设计文档 20 20
Design Review 设计复审 30 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 20
Design 具体设计 60 60
Coding 具体编码 720 340
Code Review 代码复审 60 60
Test 测试(自我测试,修改代码,提交修改) 30 30
Reporting 报告 240 200
Test Report 测试报告 60 60
Size Measurement 计算工作量 40 50
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 30
合计 2360 1830
3.计算模块接口的设计与实现过程
这次编程作业,我的主要思路就是暴力。对照了一下别人的代码,发现了一个神奇的正则函数,但由于能力不足,还没学会,所以我对地址的截取采取的措施都是暴力匹配。
既然是暴力,那显然就是用了8个函数来截取这个9级地址

实现流程: 截取名字→截取手机号→截取省份→截取城市→截取剩下的五级地址。
算法关键: 因为最后五级地址一定是带有后缀名,所以重点是省市的截取,省份采取特判,城市是通过爬取所有二级城市的信息然后打表后进行暴力对拍。

具体函数如下:

函数名 功能
def make_name() 截取名字
def make_phone() 截取手机号
def make_sheng() 截取省份
def make_city() 截取城市
def make_three() 截取三级地址
def make_four() 截取四级地址
def make_five() 截取五级地址
def make_six() 截取六级地址
4.计算模块接口部分的性能改进
花费再性能改进的时间不多,因为纯暴露,技术不足很难去追求性能,只能先追求正确率。
程序中花费最多时间的是城市的截取,因为要对中国所有的二级城市进行一一匹配。
代码展示:
性能测试图

5.计算模块部分单元测试展示

输入

1!韶划奸,上15717060981海普陀区长风新村街道光复西路1995号中山北路6-17号海鑫公寓.
1!钭洋,福建省龙13135601243岩市新罗区岩山镇岩山供销社黄固村农资农家店.
2!楚涡握,湖北随州市随县吴山镇唐王街18883549874联宏村委会.
1!黎剖奕,13614572468广东省珠海金湾区三灶镇乐康街一巷11号三灶镇海澄村委会.
1!荣户掂,天津市13708570358河东区春华街道华腾里9号楼.
2!寿佳,湖南省益阳市赫山13221817716区龙岭工业园春嘉路6号.

输出

{'姓名': '韶划奸', '手机': '15717060981', '地址': ['上海', '上海市', '普陀区', '长风新村街道', '光复西路1995号中山北路6-17号海鑫公寓.']}
{'姓名': '钭洋', '手机': '13135601243', '地址': ['福建省', '龙岩市', '新罗区', '岩山镇', '岩山供销社黄固村农资农家店.']}
{'姓名': '楚涡握', '手机': '18883549874', '地址': ['湖北省', '随州市', '随县', '吴山镇', '唐王街', '', '联宏村委会.']}
{'姓名': '黎剖奕', '手机': '13614572468', '地址': ['广东省', '珠海市', '金湾区', '三灶镇', '乐康街一巷11号三灶镇海澄村委会.']}
{'姓名': '荣户掂', '手机': '13708570358', '地址': ['天津', '天津市', '河东区', '春华街道', '华腾里9号楼.']}
{'姓名': '寿佳', '手机': '13221817716', '地址': ['湖南省', '益阳市', '赫山区', '龙岭工业园', '春嘉路', '6号', '']}

相关单元测试覆盖率截图:
在这里插入图片描述在这里插入图片描述
6.计算模块部分异常处理说明

对于输入数据:
2!寿佳,湖南省益阳市赫山13221817716区龙岭工业园春嘉路6号.
标准答案是把龙岭工业园作为四级地址,而因为我是暴力匹配四级后缀名 街道/镇/乡,所以在输出的时候造成了四级地址跑到五级地址去了,自然选择了暴力,那当然要贯彻到底咯。所以解决方法就是再加一个if。