zoukankan      html  css  js  c++  java
  • 自动生成四则运算(python实现) 更新

    自动生成四则运算(python实现) 更新

    之前的版本介绍——博客
    项目仓库——地址

    更新新内容

    • 添加了表达式可以包含括号的功能
    • 重构了一下代码

    项目的 PSP 图

    psp2.1 Personal Software Process Stages 预估时间(分钟) 实际耗时(分钟)
    Planning 计划 - -
    · Estimate · 估计这个任务需要多少时间 20 20
    Development 开发 - -
    · Analysis · 需求分析 20 30
    · Design Spec · 生成设计文档 20 15
    · Design Review · 设计复审(和同事审核设计文档) 14 16
    · Coding Standard · 代码规范(为目前的开发制定合适的规范) 10 8
    · Design · 具体设计 30 60
    · Coding · 具体编码 120 200
    · Code Review · 代码复审 20 30
    · Text · 测试(自测,修改代码,提交修改) 15 18
    Reporting 报告 - -
    · Text Report · 测试报告 20 32
    · Size Measurement · 计算工作量 30 36
    · Postmortem & Process Improvement Plan · 事后总结,并提出过程改进计划 20 27
    合计 339 554

    更新的具体过程与实现

    更新内容——增加了括号表达式的生成

    实现思路

    实现表达式添加一对括号的功能

    • 先判断表达式中的运算符是否优先级都相等
    • 如果相等, 则无需添加括号
    • 确定左括号可以插入的位置
    • 随机选取一个左括号可以插入位置
    • 在左括号插入的位置再移动 5 的位置, 插入右括号

    具体代码

    # 表达式添加括号
    def addBrackets(formula: List[str]) -> List[str]:
        # op1: 是否包含 +-, op2: 是否包含*÷
        op1, op2 = False, False
        for item in formula:
            if item in "+-":
                op1 = True
            elif item in "*÷":
                op2 = True
    
        # 表达式如果含有的运算符优先级是相等的, 就无需添加括号
        if not (op1 and op2):
            return formula
        
        # 随机插入括号
        station = [i for i in range(0, int(len(formula) / 2) + 2, 2)]
        index = station[randint(0, len(station) - 1)]
        _formula = formula[:index] + ['('] + formula[index:]
        _formula = _formula[:index + 4] + [')'] + _formula[index + 4:]
    
        return _formula
    

    运行效果

    性能分析

    执行100万次

  • 相关阅读:
    符瑞艺 160809228_C语言程序设计实验2 选择结构程序设计
    页面布局class常见命名规范
    CSS学习笔记
    HTML学习笔记
    虚拟机Centos7设置ip地址,并ping真机ip
    vue单页面开发和多页面开发的概念,及优缺点?
    传统的DOM渲染方式?
    面试题
    通过电脑chrome调试手机真机打开的微信H5页面,调试电脑微信H5页面(转载自 乐乐熊小妹)
    常见前端面试题及答案
  • 原文地址:https://www.cnblogs.com/justlikecode/p/13740748.html
Copyright © 2011-2022 走看看