• 第一次个人编程作业


    1.本次作业的github地址链接:

    https://github.com/curtain0/181700144

    2.PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 25
    Estimate 估计这个任务需要多少时间 15
    Development 开发 1000
    Analysis 需求分析 (包括学习新技术) 120
    Design Spec 生成设计文档 10
    Design Review 设计复审 30
    Coding Standard 代码规范 30
    Design 具体设计 60
    Coding 具体编码 180
    Code Review 代码复审 120
    Test 测试 60
    Reporting 报告 120
    Test Repor 测试报告 20
    Test Repor 计算工作量 10
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划
    合计 1800

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

    1、解题思路:
    首先本题是典型的字符串问题,对于字符串问题一直是自己的弱项。但是学习了paython,发现其对于字符串有其特有的优势。经过看题思考,本题需要用正则表达式来解决问题。对于给定的字符串,我们首先需要对,对其进行分割,将名字、电话、地址先分开;然后将剩下的地址再进行分级处理。在此之前还需提取出难度标识,通过难度标识的量级,判断进行什么操作。至于地址分级,则需要正则匹配,通过后缀进行匹配。(这是最苦逼的过程bug满天飞)

    2、解题步骤:
    (1)先在记事本上把所有的一级二级地名编辑好(即直辖市与省、自治区等),创建一个工程,保存在同一个工程下,用with open调用
    (2)写一个函数用于分离字符串,先提取难度标识,然后分离成名字、电话、地址
    (3)先把分离的名字电话存起来,然后删除掉,剩下地址部分。接着进行地址的分离,字符串匹配。把找到的分离出来,保存输出,重复操作。
    (4)最后输出,转成json文件
    可以使用到的函数str.split() str.find() str.complie() str.sub() str.replace()

    3、设计的具体实现
    with open('address_query.txt','r')as file_obj: //文件的读入
    def split_string(str): //分割字符串

    主要过程与代码
    for i in data:
    lists = []
    cnt = 0
    for j in data[i]:
    if (j == ""):
    lists.append(cnt)
    cnt = cnt + 1
    for list in lists:
    data[i].pop((int)(list))
    for i in data:
    if (address.find(i) != -1):
    add['province'] = i
    if (i == '北京' or i == '上海' or i == '天津' or i == '重庆'):
    add['province'] = i
    add['city'] = i + '市'
    if (address.find('市') != -1):
    address = address[address.find('市') + 1:]
    else:
    address = address[2:]
    else:
    if (i != '广西壮族自治区' and i != '内蒙古自治区' and i != '新疆维吾尔自治区' and i != '宁夏回族自治区'):
    add['province'] = add['province'] + '省'
    for j in data[i]:
    city = j[0:-1]
    if (address.find(city) != -1):
    add['city'] = j
    if (address.find('市') != -1 and address[address.find('市') - 1] == city[-1]):
    address = address[address.find('市') + 1:]
    else:
    address = address[address.find(city[-1]) + 1:]
    break
    else:
    add['province'] = ""
    add['city'] = ""

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

    5.计算模块部分单元测试

    2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
    {"姓名": "李四", "电话": "13756899511", "地址": ["福建省", "福州市", "鼓楼区", "鼓西街道", "湖滨路", "110号", "湖滨大厦一层"]}
    3!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
    {"姓名": "王五", "电话": "18960221533", "地址": ["福建省", "福州市", "鼓楼区", "", "五一北路", "123号", "福州鼓楼医院"]}
    1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.
    {"姓名": "小陈", "电话": "13965231525", "地址": ["广东省", "东莞市", "", "凤岗镇凤平路13号", "凤平路13号"]}
    
    

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

    1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
    "姓名": "张三", "电话": "13599622362", "地址": ["福建省", "福州市", "闽侯县", "上街镇福州大学10#111", "福州大学10#111"]
    本例为五级地址,但是到镇的时候,没有分离成功。

    3!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
    "姓名": "小美", "电话": "15822153326", "地址": ["北京", "北京市"]}
    当标识难度为3的时候,不会补全。菜鸡不配做这步

    1!佘吏,浙江省湖州市和孚镇李市村15054267850获港大桥南堍费伟民疼痛诊所.
    "姓名": "佘吏", "电话": "15054267850", "地址": ["浙江省", "湖州市", "和孚镇李市", "", "村获港大桥南堍费伟民疼痛诊所"]}
    当遇到镇,以及村的时候,没有正确分离。

    7.完整PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 20 30
    Estimate 估计这个任务需要多少时间 10 15
    Development 开发 1000 1200
    Analysis 需求分析 (包括学习新技术) 120 100
    Design Spec 生成设计文档 10 20
    Design Review 设计复审 30 20
    Coding Standard 代码规范 30 10
    Design 具体设计 60 30
    Coding 具体编码 180 300
    Code Review 代码复审 120 80
    Test 测试 60 60
    Reporting 报告 120 90
    Test Repor 测试报告 20 10
    Test Repor 计算工作量 10 30
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 100 120
    合计 1800 2115

    心得体会
    1、通过本次实践,让自己意识到还有很多的不足需要改进。例如:代码能力不强,找bug调试能力需要提高。很多东西考虑不全面,逻辑不够严谨
    2、经过这次作业,巩固了所学的知识,同时学习了很多新知识。例如python的正则匹配。
    3、最后一句话总结这次作业:我太难了!!!!!

  • 相关阅读:
    map,forEach,some,every,filter条件过滤的区别
    dangerouslySetInnerHTML空格不换行解决方案
    react项目里link语法报错Dangerous property 'dangerouslySetInnerHTML'
    如何判断两个数组是否相等相等
    react hooks的缺点(针对状态不同步和没有生命周期)
    面试聊啥
    Win10 PIN码是什么?如何设置?
    三个环形图(万一是n个呢)
    Chrome 离线加装扩展的新方法
    java安装
  • 原文地址:https://www.cnblogs.com/1234a12/p/11609477.html
Copyright © 2020-2023  润新知