# python-calculator **Repository Path**: ty850454/python-calculator ## Basic Information - **Project Name**: python-calculator - **Description**: 简易变量计算器: 表达式:aa\\(2,a\\)^(2^3)+3*(4-2)/8 变量:{"aa(2,a)": 3} 结果 :6561.75 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-24 - **Last Updated**: 2021-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简易变量表达式计算器 python版的表达式计算器,可以带\不带变量的文本表达式。 不带变量: ```python interpreter = Parser("-2.3 /3.2-(1+1 ) ").parsing() print(interpreter.pprint()) number1 = interpreter.evaluate() print(number1) ``` 输出: ``` (-2.3 / 3.2) - (1 + 1) -2.71875 ``` > 1.interpreter是编译后的对象,可以调用它的evaluate()方法得到计算结果,interpreter对象可以反复使用 > > 2.pprint()可以将编译后的表达式以比较美观的形式输出,如(-2.3 / 3.2) - (1 + 1) 带变量: ```python interpreter = Parser("-a /3.2-(1+b ) ").parsing() print(interpreter.pprint()) number1 = interpreter.evaluate({"a": '2.3', "b": 1}) print(number1) ``` 输出: ``` (-a / 3.2) - (1 + b) -2.71875 ``` > 1.传入变量的值会转为Decimal,所以具体规则参考官方文档https://docs.python.org/zh-cn/3/library/decimal.html > > 2.注意:如果直接传入float,结果可能会丢失进度,这是Decimal在通过float构造时的规则,如果需要避免此情况,将float转为str即可 如果变量中有符号、空格等,可以在前面加`\\`转义,如: ``` 表达式:aa\\(a\\+2\\)^(2^3)+3*(4-2)/8 变量:{"aa(a+2)": 2} 结果:256.75 ```