第一次个人编程作业

GitHub

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

解题思路

  • 看到题目非常懵,通过网上查找的资料想起了曾经了解过的的正则表达式(然鹅真的只是看到过),整理了一个初步的思路
  • 题目中的姓名是最好分离的,首先考虑把姓名取出来
  • 其次是手机号(11位数字)
  • 最后逐级分离其余部分

设计实现过程

实现过程

  • 最初考虑的是用C++写,因为其他两种语言都不太熟悉,但我还是高估了自己C++的实力,和同学交流过程发现python实现比较容易,于是开始学习python......
  • 分离名字和手机号的部分确实如预期比较容易,但是在其他部分分离的时候出现了很多问题,最后导入了整个中国的市、区/县/县级市,这里非常感谢姚彬锟同学提供了这部分的数据。
  • 总共写了1个类以及8个函数分别用来分离名字、电话、省份、市、县、乡镇、街道和门牌号,对输入缺失“省”、“市”等情况在主函数中做了处理

部分代码

截取县级的函数

def get_xian(self,s):
    rlt = re.search("(.*?自治旗)|(.*?[县区市])", s)
    if rlt == None:
        for i in areas:
            if s[0:2] in i:
                return i
        return ""
    return rlt.group(0)

性能分析


异常处理

2!李四,福建省福州137569511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层,电话号码位数缺少时会出现异常

小结

  • python在处理很多问题上面更加方便简洁,掉的头发也少
  • 自己的能力还是比较弱,要抓紧提升,跟上课程的节奏
  • 多和同学交流,自己闭门造车有时候真的解决不了问题
posted @ 2019-09-17 22:46  _明夜  阅读(179)  评论(2编辑  收藏  举报