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。