1.第一次个人编程作业GitHub地址

https://github.com/xiaomin1003/031702218

2.PSP表格

|||||||||
|:--|:--|:--|:--|
|PSP2.1|Personal Software Process Stages|预估耗时(分钟)|实际耗时(分钟)
|Planning|计划| 0.5h | 1h
|Estimate|估计这个任务需要多少时间| 15h |20.8h
|Development |开发 |3h|4h
|Analysis| 需求分析(包括学习新技术) |2h |4h
|Design Spec| 生成设计文档 |0.5h|0.4h
|Design Review| 设计复审 |0.5h |0.2
|Coding Standard|代码规范 (为目前的开发制定合适的规范) |0.1h|0.1h
|Design|具体设计|0.5h |0.6h
|Coding |具体编码 | 3h|3.5h
|Code Review|代码复审|1h| 2h
|Test| 测试(自我测试,修改代码,提交修改)|2h|3h
|Reporting |报告 |0.1h|0.2h
|Test Repor |测试报告 ** |0.1h|0.1h**
|Size Measurement |计算工作量 |1.2h|1.5h
|Postmortem & Process Improvement Plan |事后总结, 并提出过程改进计划|0.5h| 0.2h
|合计||15h|20.8h|

3.解题思路、过程

思路其实没什么特别的,我刚刚看这个作业的时候,第一眼觉得“这不是很简单吗!”,所以我刚开始都没去细看,但是当我周二打算写代码,完全乱了阵脚,当时想了一下午都没有一个好的思路,然后别的Linux、数据库、面向对象的作业又比较多,所以我暂时把它放着,然后一直就到了周末,本来打算周六解决,但是Linux网络编程把我弄得心态有点炸,所以昨天也直接睡了,然后今天10:00am开始想,然后写,写到16:30pm就写完了(当然我没有写难度3的附加题)

4.程序框架与函数实现

程序框架

提取 "1!" or "2!" or "3!"



用split函数以","为分割符提取name



用正则表达式提取电话号码



依次按照”省级“、”市级“、”县级“、
”镇级“、”详细地址“进行提取



if mode"1",直接输出
else if mode
"2",再细分然后输出
else 输出为空地址

主要代码与函数


这里是对省级、市级、县级、镇级的提取,这里最关键的一点是用了jiaba.lcut函数,解决了比如说后缀的缺省、直辖市查询的麻烦等困难,可以说是我能解决问题的关键之助。

这里是对难度mode的对应输出的解决,用到了大量python中字符串和列表的方法。

5.程序性能分析

6.单元测试

测试的结果和分数如下:

7.异常处理




我的测试数据异常输出有两种可能,要么是难度3的输出空地址,要么是难度1和2但是市级地名很长的,因为这样的话我的jieba.lcut函数就不能把省级和市级地址分离,这是受限于jieba函数的局限性。

8.总结

一个问题,要有好的思路和足够的时间,才能比较好的解决。