第一次个人编程作业

仓库地址

一.PSP表格

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

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

  • 解题思路描述:

废话:
想给第一次编程作业添个备注,就叫只会用python打helloworld的我如何速成的故事。
看到题目时我先流下了不学无术的泪水,然后开始在连helloworld都不会打的java和忘光了的c艹里选,我果断挑了c艹,然后下载vs2017,开始百度“代码质量检测”,“单元测评”,“代码覆盖率”,“json”“性能分析”,每个都看得我一愣一愣的,后来得知python也在选择范围内时,还是选择了起码知道helloworld怎么打的python。


正文:

看到题目后,我第一时间只反应过来两点:

  1. 名字一定在最前面,并在“,”之前
  2. 手机号一定是11位

一开始傻傻的我脑子里想的是要一个个比过去,后来我在百度如何分离手机号的时候发现了正则表达式这个东西,还了解了一下什么是json等等,打开了新世界的大门。

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

另外实话说其实我还学了if,list,for之类的,真正的从头

  • 设计实现过程

废话:
因为代码基础真的很差,我对类,函数基本上没有什么概念,上次打函数可能是一年前的事情了,不过我后来还是尝试的使用函数结果出了好多bug就不提了……


正文:

我的想法是:

  1. 判断是几级的难度(其实附加没想过去做
  2. 用split()函数进行对姓名的分割,因为刚好在逗号前
  3. 用正则表达式匹配出手机号
  4. 根据难度判断是5级(省市区街道)还是7级(省市区街道路号码)来用正则表达式划分,存入一个list里(还要对直辖市进行判断!)
    PATTERN = r'([\u4e00-\u9fa5]{2,5}?(?:省|自治区|市)){0,1}([\u4e00-\u9fa5]{2,7}?(?:区|县|州|市)){0,1}([\u4e00-\u9fa5]{2,7}?(?:区|县|州|市)){0,1}([\u4e00-\u9fa5]{2,7}?(?:村|镇|街道|乡)){0,1}'
  5. 把姓名,手机号,地址装在一个dict字典里,然后转换为json格式输出
    dic['姓名']=line1[0] dic['手机']=tel[0] finaladd=[zxprovince,province,city,district,last1[0]] dic['地址']=finaladd json = json.dumps(dic,ensure_ascii=False,indent=4) print (json)

    在我艰难的用了很久很久的时间学+打代码完成了上述之后,在2019年9月16日的晚上,截止前一天,我发现1,2级难度里,“省”,“市”两个字也可能缺失,我的心情是w~t~f~……

    我卑微的理解能力让我以为只有3级难度才会出现缺失的部分。
    收拾好心情的我马上想到暴力打表以前好像干过的方法,开始寻找中国省市区字典表的漫漫长路,后来我还是找到了,但是我发现我没办法在我已经写的挺完整的代码里插入这段再改,只能重新做,我尝试了一下但是最后还是放弃了(相信之后我会去做的。)

流程图如下:

[流程图](第一次个人编程作业_第1张图片

)

三.计算模块接口部分的性能改进

[性能分析部分截图](第一次个人编程作业_第2张图片

)
性能分析部分截图。
改进思路:使用函数进行切分姓名和手机号,而不是直接运行,都在主程序中会导致阅读困难,要学一下python中类和函数的使用。

四.单元测试

设计的部分样例:

1!小黄,新疆维吾尔自治区13107936778阿克苏地区新和县奇明路3号沙漠公园
3!小林,福建省福州市福清市玉屏13107936880街道江滨花园5号505
1!小黄,福建省莆田市城厢区凤凰山街道第13107938899十小区
2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
2!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
3!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.

结果:

{"姓名": "小美", "手机": "15822153326", "地址": ["北京", "北京市", "东城区", "","交道口东大街", "1号", "北京市东城区人民法院"]}

{"姓名": "小黄", "手机": "13107936778", "地址": ["新疆维吾尔自治区", "阿克苏地区", "新和县", "", "奇明路3号沙漠公园"]}

{"姓名": "小郭", "手机":"17740409080", "地址": ["福建省", "厦门市", "翔安区", "新店镇", "厦门大学翔安校区33栋"]}

{"姓名": "小林", "手机": "13107936880", "地址": ["福建省", "福州市", "福清市", "玉屏街道", "", "", "江滨花园5号505"]}

{"姓名": "小黄", "手机": "13107938899", "地址":["福建省", "莆田市", "城厢区", "凤凰山街道", "第十小区"]}

{"姓名": "李四", "手机":"13756899511", "地址": ["福建省", "福州市", "鼓楼区", "鼓西街道", "湖滨路", "110号", "湖滨大厦一层"]}

{"姓名": "张三", "手机": "13599622362", "地址": ["", "福建福州", "闽侯县","上街镇", "", "", "福州大学10#111"]}

{"姓名": "王五", "手机": "18960221533", "地址": ["福建省", "福州市", "鼓楼区", "", "五一北路123号福州鼓楼医院"]}

{"姓名": "小美", "手机":"15822153326", "地址": ["北京", "北京市", "东城区", "", "交道口东大街", "1号","北京市东城区人民法院"]}

{"姓名": "小陈", "手机": "13965231525", "地址": ["广东省", "东莞市", "", "凤岗镇", "凤平路13号"]}

我没有完成3!的附加部分,所以有一些结果可能产生错误。
但在设计时为了找出会在哪里失败,还是设计了一些3!的题目来模拟真正的检测,发现果然不能补全上街道。为了提高代码覆盖率,考虑到各级的缺失来检测。

五.异常处理

  1. 输入时没有输入难度选择“1!”“2!”“3!”
  2. 输入时没有输入姓名
  3. 输入时手机号没有11位

例子:

小郭,福建省厦门17740409080市翔安区新店镇厦门大学翔安校区33栋

3!,福建省福州市福清市玉屏13107936880街道桥南路江滨花园5号505

1!小黄,福建省莆田市城厢区凤凰山街道第13107939十小区

六.总结部分

欢迎来到结尾的总结部分~
看到这里的你一定很累了,还要想着怎么给我写50字评论,辛苦啦比心( •̀ ω •́ )y!

这是我第一次写这么多的代码吧,这两年也不知道怎么混过来的2333,感觉在短短一周里逼迫自己提升了很多,虽然遇到了各种各样的困难,但我从不停的百度,查博客当中收获到了很多,也从同学们(重点表扬丁枢桐,小姚,展鸿,林睿睿)得到了很多的帮助!

快没有时间啦,再吐槽一下安装苦手的我,为了装质量检测工具,把我的vscode给搞崩了,有没有大佬能救我,在17号18点新下了一个pycharm,还是英文版的我都看不懂QAQ,勉强搞完了作业,突然想起来我亲爱的导师小傅也催我学python,路漫漫其修远兮,我一定努力QAAAAQ!

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