第一次个人编程作业
1.github
2.
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 70 |
Estimate | 估计这个任务需要多少时间 | 75 | 75 |
Development | 开发 | 60 | 120 |
Analysis | 需求分析 (包括学习新技术) | 400 | 600 |
Design Spec | 生成设计文档 | 30 | 15 |
Design Review | 设计复审 | 30 | 15 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 10 |
Design | 具体设计 | 60 | 50 |
Coding | 具体编码 | 300 | 400 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 200 |
Reporting | 报告 | 120 | 100 |
Test Repor | 测试报告 | 60 | 90 |
Size Measurement | 计算工作量 | 20 | 15 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 15 |
合计 | 1425 | 1760 |
3.解题思路
听说用python比较简单,于是以前没有学好C++的我决定先学习python,我花了大量的时间学习,看的是廖雪峰的教程。大概过了一遍后,一开始想直接用正则表达式切出地址,后来发现有些地址没有省和市,又想通过打表来做,但是发现了一篇使用python提取中文地址描述中的省市区信息的博客,天真的以为问题已经解决,但当我花了很多时间导入这个模块后,发现它生成的数据类型是dataframe,我找不到把它转化成json的方法,这时候留给我的时间已经不多了,于是我就索性按带有后缀的地址来做了,并特殊讨论了一下直辖市。具体过程是:
1.用正则表达式把难度提取出来
2.用正则表达式把手机号提取出来
3.切出地址
4.按地址的级别从高到底再切出来,并且切一个删一个,放入地址数组中
4.设计实现过程
由于时间不足,我直接用面向过程的方法实现了我的思路,直接用了if的判断,甚至连函数都没有用,更没有类了。
5.改进过程
发现了正则的贪婪匹配有时候会匹配过长的地址,用?并把匹配的字符串从地址中删除疑似解决了。中途为了导入第三方模块我重新下载了3次python,但是最后发现好像没法用...
6.代码说明
province = re.search(r'(\w+省)|(\w+自治区)|(北京市|上海市|天津市|重庆市)',address) if province: #如果省级存在 if re.match(r'(北京市)|(上海市)|(天津市)|(重庆市)',province.group()): area.append(province.group()[0:2]) else: area.append(province.group()) else: area.append("") #省级不存在的话往数组里放入空 address1 = re.sub(province.group(), "", address) #去掉省级之后的地址
其余的市,区等方法类似。
测试运行的结果
7.心路历程和收获
小王真是太粗心了......我花了大量的时间完成这次作业,主要是用来学习,收获还是很大的,由于时间不足,3!难度的题没有做。这次作业让我入门学习了那么一点点的python,希望后续可以继续学下去。最后希望我的舍友不要再通宵了!