第一次个人编程作业

GitHub

My GitHub

PSP表格

PSP2.1Personal 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及省市缺失的补全部分,以及希望我的舍友不要熬夜写作业,要注意身体

posted @ 2019-09-17 22:18  计6名宿王火火火  阅读(179)  评论(3编辑  收藏  举报