第一次个人编程作业
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间 | 30 | 10 |
Development | 开发 | 180 | 120 |
Analysis | 需求分析(包括学习新技术) | 300 | 370 |
Design Spec | 生成设计文档 | 20 | 10 |
Design Review | 设计复审 | 20 | 10 |
Coding Standard | 代码规范(为开发制定合适的规范) | 20 | 35 |
Design | 具体设计 | 30 | 45 |
Coding | 具体编码 | 400 | 360 |
Code Review | 代码复审 | 120 | 190 |
Test | 测试(自我测试,修改,提交修改) | 120 | 230 |
Reporting | 报告 | 30 | 60 |
Test Report | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 10 | 5 |
Postmortem & Process Improvement Plan | 事后总结并提出过程改进计划 | 20 | 30 |
合计 | 1340 | 1505 |
解题思路
- 看到题目非常懵,通过网上查找的资料想起了曾经了解过的的正则表达式(然鹅真的只是看到过),整理了一个初步的思路
- 题目中的姓名是最好分离的,首先考虑把姓名取出来
- 其次是手机号(11位数字)
- 最后逐级分离其余部分
设计实现过程
实现过程
- 最初考虑的是用C++写,因为其他两种语言都不太熟悉,但我还是高估了自己C++的实力,和同学交流过程发现python实现比较容易,于是开始学习python......
- 分离名字和手机号的部分确实如预期比较容易,但是在其他部分分离的时候出现了很多问题,最后导入了整个中国的市、区/县/县级市,这里非常感谢姚彬锟同学提供了这部分的数据。
- 总共写了1个类以及8个函数分别用来分离名字、电话、省份、市、县、乡镇、街道和门牌号,对输入缺失“省”、“市”等情况在主函数中做了处理
部分代码
截取县级的函数
def get_xian(self,s):
rlt = re.search("(.*?自治旗)|(.*?[县区市])", s)
if rlt == None:
for i in areas:
if s[0:2] in i:
return i
return ""
return rlt.group(0)
性能分析
异常处理
2!李四,福建省福州137569511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层,电话号码位数缺少时会出现异常
小结
- python在处理很多问题上面更加方便简洁,掉的头发也少
- 自己的能力还是比较弱,要抓紧提升,跟上课程的节奏
- 多和同学交流,自己闭门造车有时候真的解决不了问题