第一次个人编程作业
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
·Estimate | 估计这个任务需要多少时间 | 30 | 20 |
Development | 开发 | 770 | 1445 |
·Analysis | 需求分析 (包括学习新技术) | 100 | 240 |
·Design Spec | 生成设计文档 | 60 | 100 |
·Design Review | 设计复审 | 60 | 100 |
·Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
·Design | 具体设计 | 100 | 125 |
·Coding | 具体编码 | 240 | 360 |
·Code Review | 代码复审 | 100 | 200 |
·Test | 测试(自我测试,修改代码,提交修改) | 100 | 300 |
Reporting | 报告 | 35 | 60 |
·Test Repor | 测试报告 | 10 | 20 |
·Size Measurement | 计算工作量 | 5 | 15 |
·Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 25 |
合计 | 835 | 1525 |
计算模块接口的设计与实现过程:
函数名 | 作用 |
---|---|
def creatsheng() | 用于存储全国所有省份 |
def creatshi() | 用于存储全国所有市级 |
def phone(Location) | 用于提取手机号码 |
def Name(Location) | 用于提取人名 |
def address(Location) | 用于提取地址 |
def result(Location) | 用于把分离出来的人名、电话号码、地址合并起来存在一个新的列表里 |
def difficulty(Location) | 用于分离难度 |
def separate(place,num) | 用于分离各级地址 |
- 关键代码: 我用遍历的方法,将省、市、县等等用正则一级一级的遍历过去,比如
a=re.match(sheng[i],place)
这是用来寻找省份的列表中与地址匹配的地点,然后用place=re.sub(r'省',"",place,1)
将省
字删掉,就用这种方法一级一级遍历过去。 - 独到之处: 我也不知道别人是怎么写的,但别人应该都写得很牛逼(
毕竟看他们一直在群里讲那么多我都没听过的高端名词)。我自己觉得我的独到之处应该就是没有调用什么地图的函数来识别地点,我自己写了两个列表用来存省跟市的行政区地点。可以说我这代码一看就知道是我自己闭门造车、造轮子的,(疯狂的逼死正则)很别具一格。哈哈哈!!!
计算模块接口部分的性能改进:
计算模块部分单元测试展示:
- 因为我用的是python写的,本以为肯定要搞个文本输入输出流吧,所以我就都用文本输入输出流去写,等写完要提交时,我看了一下助教写的注意事项里说input里面只能有一个测试点,本来有点懵,不懂他什么意思,后来问他,他说使用控制台输入输出的,因为file不好搞(
我也不是很懂为啥不好搞,但既然他这么说了,那我就照做了,避免给人家带来太多不必要的麻烦)所以我就把代码又重新改了一遍,全部改成控制台输入输出的。(哈哈哈,我废话有点多) - 因为是控制台输入输出的,所以我就手动输入了样例。例如:
- 测试数据的思路就是:因为我只做到难度
1!
和难度2!
,难度3!
我没有去挑战,所以我是把地址按照1!
2!
分成五级和七级,至于具体匹配哪一级就是根据输入的难度系数来判断,然后一级一级匹配,如果有哪一级没有匹配到的话,那那一级就缺失,即用""
表示。
计算模块部分异常处理说明:
- 至于异常处理方面,因为我之前没有注意看作业要求有这点,所以异常出现的场景我就没有截图下来,不过我这边还是稍微讲一下吧。
- 就是地址我都是列表存的,但是列表在用正则匹配的时候是会报错的,因为正则要求的是字符串,我一开始都没有忽略了这个问题,后来才发现的,所以就需要用到
"".join(list)
,这个可以很好的把列表转化为字符串 - 就是转化为json的时候,一开始他不能很好的展示出json的格式,所以需要在
json.dumps
的参数里加上indent =4
,然后就是输出的数据编码不是utf-8
,所以参数里还要再加上ensure_ascii=False
。这样就基本能很好的解决这些异常了。
灵魂上道
- 终于到了灵魂上道这个环节了,接下来就是我们之间灵魂交流了。
- 题目说要结合在构建之法中学到的知识,但貌似这本书好像也还没学多少呀。这就有点尴尬咯!(
那就死死的给他尬住) - 不过吼,我觉得通过这次作业还是能学到很多东西。
- 比如已经被我逼疯的正则同志啊,忽然发现这东西还是挺好用的(
好像我全程都是正则); - 还有就是我之前自学的
python
,以前都没有真正实践的机会,这次终于可以派上用场了; - 我本来是想用
c++
写的,但没过多久我就放弃了,因为发现用c++
好像没那么好写,至于java
嘛,之前是有自学过一段时间,但太久没用了,好像有的都忘了,而且java
好像都要写很长,所以就又放弃了。最终选择了python
。然后我才真正的领会到了python
的好用之处 - 当然还有最后一个get到的最强技能,那就是跟舍友互骂菜鸡的本领啦!!!难搞哦!
- 比如已经被我逼疯的正则同志啊,忽然发现这东西还是挺好用的(