第一次个人编程作业

一.Github

菜鸡的仓库地址

二.PSP表格

PSP2.1 Personal SoftwareProcess Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 45 50
·Estimate ·估计这个任务需要多少时间 30 40
Development 开发 1000 1200
·Analysis · 需求分析 (包括学习新技术) 150 180
·Design Spec · 生成设计文档 30 20
·Design Review ·设计复审 30 10
·Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 45
·Design · 具体设计 120 150
·Coding · 具体编码 240 300
·Code Review · 代码复审 60 70
·Test · 测试(自我测试,修改代码,提交修改 120 150
Reporting 报告 100 80
·Test Repor ·测试报告 30 150
·Size Measurement ·计算工作量 15 20
· Postmortem & Process Improvement Plan ·事后总结, 并提出过程改进计划 80 60
· 合计 2080 2355

三.计算模块接口的设计与实现过程

3.1解题思路
心路历程(一段废话罢辽):一开始看到题目这么多字我其实很崩溃,由于给的三种编程语言里我只学过c++,所以一开始我并没考虑过用其他两种语言。诚实的说唯一学过的也并不太记得了。然后有一天晚上,隔壁宿舍的姐妹跑来跟我们说不要用c++,用python,c+太难了。难就算了,emm而且还是太难了,所以我当然是选择相信她。于是我就开始自学python了。(emm两天速成的菜鸡水平,所以代码里有很多地方直接采用暴力)
下面是我的并不机灵的解题步骤:
1.定义字典client,用于存储数据;
2.先把难度等级,姓名,手机号码和标点符号分离,这里用正则表达式和切割字符串函数split实现,留下只含有纯地址的字符串;
3.按照题目规则给出的地址等级开始划分,我用了一些常见的地址后缀,每次提取出与之匹配的地址后就删除该级地址。每个等级中几种特殊的地址(比如直辖市自治区等等)我直接暴力处理了。 这种方法的缺点就是如果输入中缺少那些后缀就没办法区分了,所以张三大哥的地址我就没弄出来。
4.在五级地址时要判断难度,决定是否往后继续划分,难度为1就停止,2或3则继续往下划分;
5.最后将字典中的数据转化为json格式输出,用到了json.dumps函数;

3.2计算模块接口的实现
因为我没有分成函数去做,就一步步得来,所以上面的步骤就很明了了。

3.3代码关键及独到之处
就是比较简单,易懂。没啥太特别的了,对于刚入门的菜鸡还有很长一段路要走,加油加油冲冲冲!

4.计算模块接口部分的性能展示

第一次个人编程作业_第1张图片

5.计算模块部分单元测试

输入:
2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
3!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.
1!庾感裤,宁夏回族自治区中卫沙坡头区砖塔13963011320村卫生室.
1!鲁胞,上海长宁区周18951233466家桥街道长宁路999号春天花园
2!张丽,吉林省白城市洮南市团结街道兴安南街5566号安泰社区公共事务13949401891服务中心.
2!李丽,13585841307浙江舟山市普陀区六横镇台兴路202号台门中学.
2!小球,浙江省温州市文成县南田镇朱宅路20号南田15217337889镇人民政府.
输出:
{"姓名": "李四", "手机": "13756899511", "地址": ["福建省", "福州市", "鼓楼区", "鼓西街道", "湖滨路", "110号", "湖滨大厦一层"]}
{"姓名": "张三", "手机": "13599622362", "地址": ["福建省", "福州市", "闽侯县", "上街镇", "大学10#111"]}
{"姓名": "王五", "手机": "18960221533", "地址": ["福建省", "福州市", "鼓楼区", "", "五一北路", "123号", "福州鼓楼医院"]}
{"姓名": "小美", "手机": "15822153326", "地址": ["北京", "北京市", "东城区", "", "交道口东大街", "1号", "人民法院"]}
{"姓名": "小陈", "手机": "13965231525", "地址": ["广东省", "东莞市", "", "凤岗镇", "凤平路13号"]}
{"姓名": "庾感裤", "手机": "13963011320", "地址": ["1!庾感裤,宁夏回族自治区", "宁夏回族自治区", "中卫沙坡头区", "", "砖塔村卫生室"]}
{"姓名": "鲁胞", "手机": "18951233466", "地址": ["上海", "上海市", "长宁区", "周家桥街道", "长宁路999号春天花园"]}
{"姓名": "张丽", "手机": "13949401891", "地址": ["吉林省", "白城市", "洮南市团结街道兴安南街5566号安泰社区", "", "", "", "公共事务服务中心"]}
{"姓名": "李丽", "手机": "13585841307", "地址": ["浙江省", "舟山市", "普陀区", "六横镇", "台兴路", "202号", "台门中学"]}
{"姓名": "小球", "手机": "15217337889", "地址": ["浙江省", "温州市", "文成县", "南田镇", "朱宅路", "20号", "人民政府"]}
第一次个人编程作业_第2张图片

6.计算模块部分异常处理说明

1.没有输入难度等级
2.输入的电话号码格式不规范,不是11位
3.把工业区这类地址当成市级地址
例:
输入:1!,广东省珠海金湾区三灶1234567镇乐康街一巷11号三灶镇海澄村委会.
输出:Traceback (most recent call last):
File "C:/Users/T/Desktop/biu/xy.py", line 183, in
person['姓名']=getname(message)
File "C:/Users/T/Desktop/biu/xy.py", line 19, in getname
(name,q)=message.split(',')
ValueError: not enough values to unpack (expected 2, got 1)

你可能感兴趣的:(第一次个人编程作业)