python计算字符串表达式的值_用一个带sympy的数值表达式计算字符串?

我编写了一个计算拉格朗日插值多项式数值表达式的函数:#!/usr/bin/env python

#coding: utf8

from sympy import *

import json

def polinomioLagrange(Xs, Ys, t):

x = Symbol('x')

expresion = ''

for k in range(len(Xs)):

if k >0: #Si no es el primero ni el último término de la sumatoria

expresion = expresion + '+' + str(Ys[k]) + '*'

elif k==0:

expresion = expresion + str(Ys[k]) + '*'

expresion = expresion + '('

for i in range(len(Xs)):

if k==i:

continue # Si i==k saltamos esta iteración para eliminar división sobre cero

expresion = expresion + '(' + '3' + '-' + str(Xs[i]) + ')'

if k != len(Xs)-1 and i!= len(Xs)-1:

expresion=expresion+'*'

#expresion = expresion + '(' + str(a) + '-' + str(Xs[i]) +' )' + '/' + '(' + str(Xs[k]) + '-' + str(Xs[i]) + ')'

expresion = expresion + '/'

for i in range(len(Xs)):

if k==i:

continue # Si i==k saltamos esta iteración para eliminar división sobre cero

expresion = expresion + '(' + str(Xs[k]) + '-' + str(Xs[i]) + ')'

if i != len(Xs)-1 and k != len(Xs)-1:

expresion=expresion+'*'

print expresion

print k, i

ewa = raw_input('Prompt :')

expresion = expresion + ')'

print expresion

当我用lagrange([0,1,2,4],[-1,0,7,63],3)调用函数时,我得到了输出:

^{pr2}$

但是,如果我尝试sympify(expresion)我会得到错误输出:code, global_dict, local_dict) # take local objects in preference

File "", line 1, in

TypeError: 'NegativeOne' object is not callable

我知道这可能是因为字符串中有-1,但是。。。如何简单地计算表达式?在


版权声明:本文为weixin_39668408原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。