任意输入含加减乘除乘方开方的文本数学表达式文本,自动计算结果
def eval_formula(formula): import math import ast import operator as op operators = {ast.Add: op.add, ast.Sub: op.sub, ast.Mult: op.mul, ast.Div: op.truediv, ast.Pow: op.pow, ast.BitXor: op.xor, ast.USub: op.neg} def eval_expr(node): if isinstance(node, ast.Num): # <number> return node.n elif isinstance(node, ast.operator): # <operator> return operators[type(node)] elif isinstance(node, ast.UnaryOp): # <unaryop> <expr> return eval_expr(node.op)(eval_expr(node.operand)) elif isinstance(node, ast.BinOp): # <expr> <operator> <expr> return eval_expr(node.op)(eval_expr(node.left), eval