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

posted @ 2020-09-27 17:29  康诚嘉士  阅读(274)  评论(0编辑  收藏  举报