第一次个人编程作业
1.作业github链接
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
· Planning | · 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 15 |
· Development | · 开发 | 200 | 150 |
· Analysis | · 需求分析 (包括学习新技术) | 300 | 450 |
· Design Spec | · 生成设计文档 | 60 | 20 |
· Design Review | · 设计复审 | 30 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
· Design | · 具体设计 | 60 | 40 |
· Coding | · 具体编码 | 600 | 800 |
· Code Review | · 代码复审 | 60 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 75 |
· Reporting | · 报告 | 30 | 40 |
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 30 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 90 |
· 合计 | 1590 | 1840 |
3.计算模块接口的设计与实现过程
函数 | 描述 |
---|---|
replace() | 把字符串中的旧字符串替换成新字符串 |
re.sub() | 替换字符串中的匹配项 |
split() | 按照能够匹配的子串将字符串分割后返回列表 |
re.findall() | 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表 |
re.match() | 从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none |
append() | 在列表末尾添加新的对象 |
实现过程:创建省市名称的字典并通过正则表达式匹配提取。Python的re模块提供各种正则表达式的匹配操作,使用这一内嵌于Python的语言工具,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息。 |
4.计算模块接口部分的性能改进
性能分析:程序运行花费的时间主要分布在输入函数input()上
改进思路:算法的时间复杂度对程序的执行效率影响最大,使用dict查找元素的时间复杂度是O(1);尽量使用python内置的函数,运行要快于自定义的函数。
5.计算模块部分单元测试展示
单元测试
2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
2!库里,浙江省温15217337889州市文成县南田镇朱宅路20号南田镇人民政府.
2!汤普森,福建省莆田市仙14752864795游县园庄镇园庄村文化街299号园庄中学.
2!杜兰特,广西壮族自治区桂林市15605131954七星区七星区街道金星路2号矿地院.
2!伊戈达拉,贵州省贵15766780930阳市修文县龙岗社区服务中心服务中心阳明西路196号龙岗居委会.
1!格林,广东省珠海市斗15863594802门区井岸镇草朗冲48号楼.
1!利文斯顿,安徽省合肥市13993712031瑶海区长淮街道红星村19幢.
1!巴恩斯,河北省衡水市武强13553375059县武强镇北小范村村委会.
输出
{"姓名": "李四","手机": "13756899511","地址": ["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]}
{"姓名": "张三","手机": "13599622362","地址": ["福建省","福州市","闽侯县","上街镇","福州大学10#111"]}
{"姓名": "王五","手机": "18960221533","地址": ["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]}
{"姓名": "库里", "手机": "15217337889", "地址": ["浙江省", "温州市", "文成县", "南田镇", "朱宅路", "20号", "南田镇人民政府"]}
{"姓名": "汤普森", "手机": "14752864795", "地址": ["福建省", "莆田市", "仙游县", "园庄镇", "园庄村文化街", "299号", "园庄中学"]}
{"姓名": "杜兰特", "手机": "15605131954", "地址": ["广西壮族自治区", "桂林市", "七星区", "七星区街道", "金星路", "2号", "矿地院"]}
{"姓名": "伊戈达拉", "手机": "15766780930", "地址": ["贵州省", "贵阳市", "修文县", "龙岗社区服务中心", "服务中心阳明西路", "196号", "龙岗居委会"]}
{"姓名": "格林", "手机": "15863594802", "地址": ["广东省", "珠海市", "斗门区", "井岸镇", "草朗冲48号楼"]}
单元测试覆盖率
6.计算模块部分异常处理说明
(1)东莞是全国四个不设区的地级市之一
(2)手机号码输入不能少于11位数,否则程序运行会报错。