• 自动生成四则运算(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万次

  • 相关阅读:
    毛笔算法 毛笔签名效果
    手写输入控件
    全栈工程师成长路线
    配置msdtc
    流行的广告轮播(图片轮播)JS代码!!
    水晶报表放上去网站会爆:bobj错误的
    查询所有存储过程
    VB.NET and C# Comparison
    SQL查询案例:多行转换为一行
    SQL Server行列转换[转]
  • 原文地址:https://www.cnblogs.com/justlikecode/p/13740748.html
Copyright © 2020-2023  润新知