1. 需求分析
1.1 功能需求
1)支持基本的四则运算:加法(+)、减法(-)、乘法(*)、除法(/);2)支持多步运算,例如 1 + 2 * 3;3)不支持括号,但运算符优先级遵循数学规则(先乘除,后加减)
1.3 非功能需求
1)提供简单的错误处理,例如除零错误或非法运算表达式输入;2)通过单元测试确保代码的正确性并人工测试保证可用性。
2、设计
2.1 总体设计
1、输入:用户通过命令行输入一个字符串表达式,例如1+2*2,
2、解析输入:将字符串解析为数字和操作符的列表,例如 [1, '+', 2, '*', 2]
。
3、计算:先计算乘法和除法(优先级高)再计算加法和减法(优先级低)。
4、结果:返回最终的计算结果。
2.2 模块设计
1、parse_expression模块:将输入的字符串解析为数字和操作符的列表。使用正则表达式提取数字和操作符
2、calculate模块:按照运算符优先级计算表达式先处理乘和法,再处理加和减。
3、main模块:接收用户输入,处理输入异常,调用解析和计算模块,输出结果