第一次个人编程作业

GIthub地址

https://github.com/yemengqing/071703428

PSP表格

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

解题思路

 废话//先得说一下对这个作业的感情,在这个作业发布的前一周,每天看着另外三个舍友疯狂敲代码疯狂抱怨,又是熬夜熬夜熬夜,我在旁边悠悠闲闲美滋滋喝着我的热水早早上床躺着准备睡觉。听见“学正则学正则”,什么“匹配匹配”,“还要学GitHub”,心存侥幸我们不会是这个题目,然后 果然躲不掉。//
 语言当然还是python,有学了一点基础的语法。开始写的第一步就是去看了正则表达式(马上想起前人的经验),想到通过字符串的分割可以得到姓名(逗号之前),手机号最开始是通过提取出数字数组,后来想到其他情况肯定不行,就换成了通过检索连续11位数字也很快就得到了。地址看了很久都没啥头绪,问了同学想要引入数据文件然后遍历匹配,又是搜搜搜,还没实现就听说了cpca,直接安装引用就得出了前三级,开开心心。然后更具体地划分又卡住了,可能是cpca太美妙了,后来直接弃了cpca,用了json对象一级以及匹配。
 最关键最头痛的是一开始不知道要分等级的要求,后来看到新的要求整个人懵了好一下。
 总之 菜是原罪的确没错
 

程序流程

1.主要函数

函数 作用
def getlevel(s) 获取等级
def getname(s) 抽取名字
def getphone(s) 抽取电话号码
def getaddr(ss, phone) 获得整块地址
def Dele(address, province) 删除相同的地址部分
def getroad(string4) 利用正则得到第五级地址
def getnumber(string6) 利用正则得到第六级地址
def findarea(aareas,string2) 找到县级

2.性能分析图
第一次个人编程作业_第1张图片

代码说明

代码:

##############省查找##################
 for province in data_json:  
        one = address[0] + address[1]
        if province['name'].find(one) != -1: 
            # print("yes,i find province")
            result.province = province['name']
            #print(result.province)
            new1 = cutSame(address, result.province)
            #print(new1)
          
            if result.province == "北京"or result.province == "重庆"or result.province == "天津"or result.province == "上海":
                new1 = result.province + new1
            cities = province['children']

##############市查找##################
     for city in cities:  
                two = new1[0] + new1[1]
                if city['name'].find(two) != -1 :
                    result.city = city['name']
                    #print(result.city)
                    new2 = cutSame(new1,result.city)
                    # print(new2)
                    areas = city['children']
                    #print(areas)
                    new3 = new2

模块部分单元测试展示

函数调用图:
第一次个人编程作业_第2张图片

覆盖率:
第一次个人编程作业_第3张图片

模块部分异常处理说明:

  • 没想到的是号也会缺失
    2!戚形亮,河北省15184451587张家口怀安县头百户镇头百户派出所.
  • 第六级地址划分,找不到相应的关键词正则表达式也会出错
    2!曾阀犬,天津河东区唐家口街道成林道63号天津工业大学15755715952.
  • 等级判断不出来的时候按照七级来划分。
    小张,福18150632336建福州龙江街道福山路.
  • 省也可以缺失
    3!牛多搓,来宾市金秀瑶15029285452族自治县六巷乡六巷街1号六巷乡人民政府.

学习心得

好好学python,多学点总是没错的,后悔也后悔在没多学,菜又爱玩(呲牙又委屈。最重要的是让我再一次认识到了计划的重要性,写之前先把想法流程都好好构思一下真的很关键,不然就会像我一开始一样想到什么写什么,代码改来改去乱改。面向对象的思想真的也很重要,太久没打代码的后果就是一开始代码完全乱成一团,凭自己高兴爱写什么写什么,回头又看不懂。构思清楚来!!再敲也不迟啊(吧
看好要求也很关键,总结下来就是乱乱乱。地址的数据很多,情况很多种很容易就没有考虑到就很头痛。
还有敲代码的时候心要静下来,好好敲。
切身体会 为什么我这么菜

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