提问人:ControltheAI 提问时间:1/14/2023 最后编辑:ControltheAI 更新时间:1/16/2023 访问量:127
在 Python 中将数字传递给 Sympy 函数
Passing Numbers to a Sympy function in Python
问:
我正在练习 Codewars 的 Python。其中一个问题是将一个函数作为字符串中给出的输入,对其进行微分,然后使用另一个作为整数给出的输入并返回结果。例如,假设输入是
stringf=x**2+2x
inputint=3
def differentiate(stringf,inputint) 应返回 8。我设法通过使用 Sympy 和 eval 来做到这一点。但是,当我使用 sympy.diff 获取函数的派生时,它会将常规 lambda 函数转换为您无法传递参数的其他内容。例如,您可以在下面的代码中执行 f(1),但不能执行 deffunc(1),它会抛出错误“TypeError: 'Add' object is not callable”,因为 deffunc 的类型在 sympy.diff 之后变为 “<class 'sympy.core.add.Add'>”。
def differentiate(equation, point):
import sympy as sym
f=lambda x:equation #turn the string into a formula with x
x= sym.symbols('x')
deffunc=sym.diff(f(x),x) #differentiate with respect to x
strfunc=str(deffunc) #convert the function to a string to be used in eval
x=point
f=eval(strfunc)
return f
我找到了一种解决方法,只需将其转换为字符串,然后使用 eval 即可,但我想知道是否有更好的方法将“点”传递到“deffunc”中?
答: 暂无答案
评论
eval