第一次个人编程作业
GitHub
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 50 |
Estimate | 估计这个任务需要多少时间 | 0 | 0 |
Development | 开发 | 480 | 480 |
Analysis | 需求分析 (包括学习新技术) | 480 | 300 |
Design Spec | 生成设计文档 | 0 | 0 |
Design Review | 设计复审 | 0 | 0 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 5 | 1 |
Design | 具体设计 | 0 | 0 |
Coding | 具体编码 | 450 | 500 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 300 | 300 |
Reporting | 报告 | 120 | 100 |
Test Repor | 测试报告 | 60 | 50 |
Size Measurement | 计算工作量 | 0 | 0 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 1985 | 1391 |
解题思路
思考
看完题目第一反应是正则,虽然其中的部分用正则无法识别,例如福建福州这类没有后缀的,但是时间紧迫,先搞定原始需求;接下来确定技术选择,给的三个c++,python,java,选择较为熟悉的py;确认后开始阅读py正则的文档,过了一遍之后开始编码
找资料
设计实践
代码思路
首先分析input的数据:示例为 1!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
分析我们需要截取的对象参数:{姓名:'',电话:'',地址:[]}
其中开头第一个数字为难度,故先截取出难度系数,之后通过不同的难度系数来执行不同的操作
之后截取出姓名和电话,留下完整的地址信息,最后再通过之前的难度对地址进行分级截取
实现过程
area1=['省',"(市|自治州)",'(县|区|市)','(镇|街道|乡)',] area2=['省','(市|自治州)','(县|区|市)','(镇|街道|乡)','(街|路|巷)','号',] output['姓名']=re.search(r'\d!(.*),',userInput).group(1)#截取姓名 output['手机']=re.search(r'\d{11}',userInput).group()#截取手机 rank=userInput[0]#难度级别 area=locals()['area'+rank]#area1或area2 address=re.sub(r'\d{11}','',userInput).split(',')[1].strip('[.]')#完整地址
单元测试
1!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层. 1!张三,福建福州闽13599622362侯县上街镇福州大学10#111. 1!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院. 1!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院. 1!小陈,广东省东莞市凤岗13965231525镇凤平路13号. 1!刘湖,吉林省白山市六道江镇西村药店18694520738. 1!咸陡隐,江苏省苏州市吴江13184142847区平望镇新业织造有限公司吴江区平望镇双浜村村民委员会.
结果:
{ 姓名: "李四", 手机: "13756899511", 地址: [ "福建省", "福州市", "鼓楼区", "鼓西街道", "湖滨路110号湖滨大厦一层" ] }, { 姓名: "张三", 手机: "13599622362", 地址: ["", "福州市", "闽侯县", "上街镇", "福州大学10#111"] }, { 姓名: "王五", 手机: "18960221533", 地址: ["福建省", "福州市", "鼓楼区", "", "五一北路123号福州鼓楼医院"] }, { 姓名: "小美", 手机: "15822153326", 地址: ["", "北京市", "东城区", "", "交道口东大街1号人民法院"] }, { 姓名: "小陈", 手机: "13965231525", 地址: ["广东省", "东莞市", "", "凤岗镇", "凤平路13号"] }, { 姓名: "刘湖", 手机: "18694520738", 地址: ["吉林省", "白山市", "", "六道江镇", "西村药店"] }, { 姓名: "咸陡隐", 手机: "13184142847", 地址: [ "江苏省", "苏州市", "吴江区", "平望镇", "新业织造有限公司双浜村村民委员会" ] }
心得体会
大部分的语言的正则都有相通之处,关键思想是一样的,由于我太菜了,所以没有完成难度3及省市缺失的补全部分,以及希望我的舍友不要熬夜写作业,要注意身体