第一次个人编程作业
GIT链接:https://github.com/zyj-19991106/031702340.git
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 60 | 80 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 40 |
·Development | 开发 | 400 | 600 |
· Analysis | · 需求分析 (包括学习新技术) | 200 | 300 |
· Design Spec | · 生成设计文档 | 100 | 80 |
· Design Review | · 设计复审 | 30 | 40 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 120 |
· Design | · 具体设计 | 60 | 120 |
· Coding | · 具体编码 | 200 | 300 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 200 | 150 |
·Reporting | 报告 | 20 | 10 |
· Test Repor | · 测试报告 | 30 | 20 |
· Size Measurement | · 计算工作量 | 20 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 40 |
· 合计 | 1500 | 1940 |
计算模块接口的设计与实现过程
·设计思路
1.先将字符串中的难度等级提取出来,如果是1!就划分5级。如果是2!就划分7级。
2.然后用正则表达式匹配出字符串中的人名以及手机号码
3.将手机号码以及姓名从原字符串中分去,这样就只剩下地址信息,再用cpca对地址信息进行前三级的划分
4.再根据第四级的关键词“街道”、“镇”等关键字划分
5.若要划分7级,则再根据“街”、“巷”等关键词划分出第五级,根据“号”匹配出第六级的门牌号,剩余内容为第七级地址
·类和函数
第一次用python,很多类和函数都是现学现卖的
使用到的模块有re、json、cpca等
使用到的函数有:
字符串操作函数:string.strip() ,string.split()
列表操作函数:list.append(),list.pop()
使用json输出:json.dumps()
cpca前三级划分函数:cpca.transform(list,cut=False)
·关键和独到之处
感觉用cpca划分前3级更加节省时间,但是划分的准确度却不是特别高
计算接口模块性能改进
函数调用图:
时间开销图:
单元测试
输入:
1!郏稀,重庆丰13215590422都县三建乡石龙门村卫生室.
1!印模,云南省红河哈尼族彝族自治州蒙自市明白村明白小15153379393学.
1!殴删谭,河北承德承15076364360德县岗子满族乡253省道齐家营中心幼儿园.
1!权暖,13252438214海南省三亚崖城镇111乡道抱古村农场.
1!濮阳逛,河南省南15694715825阳市方城县清河镇010乡道尚营村委会.
1!桓猿攀,辽宁省营口13898044414市盖州市西海街道305国道盖州市西海农场.
1!弓器,河北省衡水市景县刘集乡马道仁村14785155220村委会.
2!濮婚时,广西壮13602947448族自治区桂林七星区七星区街道育才路15号北院广西师大育才校区.
2!夹谷抡枯,18795320124甘肃省兰州城关区皋兰路街道皋兰路210号郑家台小区.
2!羊舌线,福建省福州鼓楼区鼓东街13827706785道庆城路庆城社区.
2!柏雅蚜,上海市长宁区周家桥街道武夷路718号武夷花园722号13757741271楼.
输出:
{"姓名": "郏稀", "手机": "13215590422", "地址": ["重庆", "重庆市", "丰都县", "三建乡", "石龙门村卫生室"]}
{"姓名": "印模", "手机": "15153379393", "地址": ["云南省", "红河哈尼族彝族自治州", "蒙自市", "", "红河哈尼族彝族自治州蒙自市明白村明白小学"]}
{"姓名": "殴删谭", "手机": "15076364360", "地址": ["河北省", "承德市", "承德县", "岗子满族乡", "253省道齐家营中心幼儿园"]}
{"姓名": " 1!权暖", "手机": "13252438214", "地址": ["海南省", "三亚市", "", "崖城镇", "111乡道抱古村农场"]}
{"姓名": "濮阳逛", "手机": "15694715825", "地址": ["河南省", "南阳市", "方城县", "清河镇", "010乡道尚营村委会"]}
{"姓名": "桓猿攀", "手机": "13898044414", "地址": ["辽宁省", "营口市", "盖州市", "西海街道", "305国道盖州市西海农场"]}
{"姓名": "弓器", "手机": "14785155220", "地址": ["河北省", "衡水市", "景县", "刘集乡", "马道仁村村委会"]}
{"姓名": "濮婚时", "手机": "13602947448", "地址": ["广西壮族自治区", "桂林市", "七星区", "七星区街道", "育才路", "15号", "北院广西师大育才校区"]}
{"姓名": "羊舌线", "手机": "13827706785", "地址": ["福建省", "福州市", "鼓楼区", "鼓东街道", "庆城路", "", "庆城社区"]}
代码覆盖率
异常处理说明
2!柏雅蚜,上海市长宁区周家桥街道武夷路718号武夷花园722号13757741271楼.
{"姓名": "柏雅蚜", "手机": "13757741271", "地址": ["上海市", "上海市", "长宁区", "周家桥街道", "武夷路", "718号武夷花园722号", "楼"]}
根据“号”字匹配出现失误
心得体会
1.这次作业纯自学,没有基础直接发
2.直接意识到自己已经noob得没边,需要加紧学习
3.十三水太难了,能不能晚点交555