zoukankan      html  css  js  c++  java
  • 第一次编程作业

    我的GitHub

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

    解题步骤

    • 先用正则表达式将姓名和号码提取出来。
    • 打一个省市表
    • 提取省市
    • 提取剩下的地址
    • 结果保存为json

    设计实现过程

    看到Java直接排除,因为没学过,而c++也是个半吊子,所以用python来编写这个程序,因为有学过python,实在是对我太友好了。
    一开始想直接整个使用正则表达式,然后发现地址的标识会缺失,如果只用正则直接去世,所以我想到打表。
    这个代码首先分别打一个省份和市的列表,先分别调用函数实现等级,姓名和电话的分离,剩下的函数主要是切出剩下的地址字段然后删除,最后留下的即为切到只剩下最后一级的地址。
    最后各个函数和流程具体如下:

    函数名 说明
    def createsheng 省份打表
    def createshi 市打表
    def cutname 切去名字电话
    def cutsheng 切去省
    def cutshi 切去市
    def cutall 切去剩下的所有地址
    ![image.png](https://upload-images.jianshu.io/upload_images/19518479-4611ce519f67d61f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    返回示例

    ![image.png](https://upload-images.jianshu.io/upload_images/19518479-2288155ae68d2651.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

    image.png
    image.png

    • 可见我总共用时15秒,builtins.exec花了我大部分的时间,说明我字符串表达式的返回太多次,降低字符串返回即可提高性能。

    计算模块部分单元测试展示

    • 打表的函数我就没有做单元测试了
        def test_cutname(str):
            a=cutname(str)
            b=re.findall(r'd!(.*)(\,).*(d{11}).*',str)
            self.assertEquals(a, b[0])
    
        def test_findsheng(str):
            a=findsheng(str)
            b=re.findall(r'(.*)省?.*',str)
            self.assertEquals(a, b[0])
    
        def test_findshi(str):
            a=findsheng(str)
            b=re.findall(r'(.*)市?.)',str)
            self.assertEquals(a, b[0])
    

    计算模块部分异常处理说明

    • 只有电话,没有地址
      try:
      words=string[0:2]#切片
      except Error:
      print('没有输入地址')

    • 注意贪婪匹配!
      这个特别重要,有时候忘了写找了很久才知道错在哪里。

  • 相关阅读:
    MySQL分库分表环境下全局ID生成方案
    centos添加php及mysql环境变量
    shell中的常用通配符,字符类
    centos7 安装xinetd,telnet
    centos7 systemctl一些用法
    ps命令
    nginx与php-fpm通信的两种方式
    nginx常用功能
    MySQL安装
    MySql与MariaDB由来与历程
  • 原文地址:https://www.cnblogs.com/zuodengfeng/p/11531144.html
Copyright © 2011-2022 走看看