第一次个人编程作业
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及省市缺失的补全部分,以及希望我的舍友不要熬夜写作业,要注意身体

浙公网安备 33010602011771号