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