刚开始只是为了实现某个功能,中间需要对表达式进行计算,想着写个四则运算计算器也很简单就顺手写了, 写到后面发现需要考虑的问题还挺多的,囧。
现在把代码贴出来记录一下这辛苦的过程吧,毕竟写得挺长的= =
不做解释了,单纯为了记录,毕竟写的也挺菜的,也就能基本实现功能2333def calculate(in_formula: str) -> int:
"""
对字符串类型的数学表达式进行计算,返回计算结果
数学表达式可包含加减乘除、括号
:param in_formula: 数学表达式 如'2*(-5+3)/-1+20/(3+1)+2+(-9-2)*2'
:return: 计算结果
"""
if '(' in in_formula:
result_in_brackets = []
reg_formula_in_brackets = re.compile(r'\([^(]+\)')
formula_in_brackets = reg_formula_in_brackets.findall(in_formula)
else_formula = reg_formula_in_brackets.split(in_formula)
for i in formula_in_brackets:
result_in_brackets.append(simple_arithmetic(re.sub(r"[()]", '', i)))
for i in range(0, int(len(e