Skip to main content
 首页 » 编程设计

python之如何计算字符串中的方程式,python

2025年05月04日19lori

我有一个变量,它是 function = '(2*1)+3'。我如何将它从字符串形式中取出并计算答案?我尝试使用 float()、int(float()) 但我不确定这是否仅适用于数字。

请您参考如下方法:

我已经写过几次了,每次我都好像把代码弄丢了......

可以使用 ast 创建一个非常简单(且“安全”)的计算器:

import ast 
import operator 
 
_OP_MAP = { 
    ast.Add: operator.add, 
    ast.Sub: operator.sub, 
    ast.Mult: operator.mul, 
    ast.Div: operator.div, 
    ast.Invert: operator.neg, 
} 
 
 
class Calc(ast.NodeVisitor): 
 
    def visit_BinOp(self, node): 
        left = self.visit(node.left) 
        right = self.visit(node.right) 
        return _OP_MAP[type(node.op)](left, right) 
 
    def visit_Num(self, node): 
        return node.n 
 
    def visit_Expr(self, node): 
        return self.visit(node.value) 
 
    @classmethod 
    def evaluate(cls, expression): 
        tree = ast.parse(expression) 
        calc = cls() 
        return calc.visit(tree.body[0]) 
 
 
print Calc.evaluate('1 + 3 * (2 + 7)') 

此计算器支持数字、加法、减法、除法、乘法和取反(例如 -6)和括号组。操作顺序与 Python 相同,应该相对直观......它可以(几乎微不足道)扩展以支持 python 通过添加 ast 节点类型支持的几乎任何一元或二元运算符,并且与上面的 _OP_MAP 对应的运算符/函数。