• 第一次个人编程作业


    GitHub

    My GitHub

    PSP表格

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

    解题思路

    思考

    看完题目第一反应是正则,虽然其中的部分用正则无法识别,例如福建福州这类没有后缀的,但是时间紧迫,先搞定原始需求;接下来确定技术选择,给的三个c++,python,java,选择较为熟悉的py;确认后开始阅读py正则的文档,过了一遍之后开始编码

    找资料

    设计实践

    代码思路

    首先分析input的数据:示例为 1!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.

    分析我们需要截取的对象参数:{姓名:'',电话:'',地址:[]}

    其中开头第一个数字为难度,故先截取出难度系数,之后通过不同的难度系数来执行不同的操作

    之后截取出姓名和电话,留下完整的地址信息,最后再通过之前的难度对地址进行分级截取

    实现过程

     

    area1=['省',"(市|自治州)",'(县|区|市)','(镇|街道|乡)',]
    area2=['省','(市|自治州)','(县|区|市)','(镇|街道|乡)','(街|路|巷)','号',]
    
    output['姓名']=re.search(r'd!(.*),',userInput).group(1)#截取姓名
    output['手机']=re.search(r'd{11}',userInput).group()#截取手机
    rank=userInput[0]#难度级别
    area=locals()['area'+rank]#area1或area2
    address=re.sub(r'd{11}','',userInput).split(',')[1].strip('[.]')#完整地址

    单元测试

    1!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
    1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
    1!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
    1!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
    1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.
    1!刘湖,吉林省白山市六道江镇西村药店18694520738.
    1!咸陡隐,江苏省苏州市吴江13184142847区平望镇新业织造有限公司吴江区平望镇双浜村村民委员会.

    结果:

      

     {
              姓名: "李四",
              手机: "13756899511",
              地址: [
                "福建省",
                "福州市",
                "鼓楼区",
                "鼓西街道",
                "湖滨路110号湖滨大厦一层"
              ]
            },
            {
              姓名: "张三",
              手机: "13599622362",
              地址: ["", "福州市", "闽侯县", "上街镇", "福州大学10#111"]
            },
            {
              姓名: "王五",
              手机: "18960221533",
              地址: ["福建省", "福州市", "鼓楼区", "", "五一北路123号福州鼓楼医院"]
            },
            {
              姓名: "小美",
              手机: "15822153326",
              地址: ["", "北京市", "东城区", "", "交道口东大街1号人民法院"]
            },
            {
              姓名: "小陈",
              手机: "13965231525",
              地址: ["广东省", "东莞市", "", "凤岗镇", "凤平路13号"]
            },
            {
              姓名: "刘湖",
              手机: "18694520738",
              地址: ["吉林省", "白山市", "", "六道江镇", "西村药店"]
            },
            {
              姓名: "咸陡隐",
              手机: "13184142847",
              地址: [
                "江苏省",
                "苏州市",
                "吴江区",
                "平望镇",
                "新业织造有限公司双浜村村民委员会"
              ]
            }
    

      

    心得体会

    大部分的语言的正则都有相通之处,关键思想是一样的,由于我太菜了,所以没有完成难度3及省市缺失的补全部分,以及希望我的舍友不要熬夜写作业,要注意身体

  • 相关阅读:
    spring boot , spring security 安全的认证
    C# 插件编写
    linux diff命令详解 和 patch命令
    nginx location 匹配规则
    LVM扩容报错以及 xfs_growfs 和 resize2fs 区别
    shell ps命令 以及 ps命令 进程时间 格式转换
    shell ls 命令
    Ajax类库需要注意的问题
    JS中的基本运动逻辑思想总结
    Ajax读取文件时出现的缓存问题
  • 原文地址:https://www.cnblogs.com/xxylac/p/11537378.html
Copyright © 2020-2023  润新知