以字符串形式返回数学函数

时间:2019-02-28 08:55:19

标签: python matplotlib

假设我有一个功能:

  def func(t):
      a=5;b=-7;c=4;d=2
      return a*t**3+b*t**2+c*t+d

除了返回该函数的值外,我还试图从字面上获取该函数,因为调用该函数时,我会得到:

a*t**3 +b*t**2+c*t +d = <actual mathematical value>

我的最终目标是使它作为LaTeX表达式正确,以便在matplotlib中编写该语句。

有帮助吗?

更新亲爱的所有人,谢谢您的答复。但正如您所展示的,我只是不想再次编写该函数,就像这样:

return "a*t**3+b*t**2+c*t+d = " + str(a*t**3+b*t**2+c*t+d)

(我可以更方便地直接在plt.txt中这样做,对吧?)

我只想转换原样复制的函数:

def func(t):
  a=.05;b=-.07;c=.04;d=.02
  return a*t**3+b*t**2+c*t+d

def strf():
  #  return(r"$a*t**3+b*t**2+c*t+d$")
  return (str(func))   
  # expecting this to give the output
  #  r"$a*t**3+b*t**2+c*t+d$"

3 个答案:

答案 0 :(得分:0)

这是你的意思吗?

def func(t):
    a = 5
    b = -7
    c = 4
    d = 2
    return "a*t**3+b*t**2+c*t+d = " + str(a*t**3+b*t**2+c*t+d)

答案 1 :(得分:0)

def func(t):
    a = 5
    b = -7
    c = 4
    d = 2
    exp = "a*t**3+b*t**2+c*t+d"
    return f"{exp} = {eval(exp)}"

我想是这样

答案 2 :(得分:0)

您可以使用f字符串:

def func(t):
    a = 5
    b = -7
    c = 4
    d = 2
    result = a * t**3 + b * t**2 + c * t + d
    return result, f'a * t**3 + b * t**2 + c * t + d = {result}'

res, str_ = func(5)

print(res)
print(str_)

输出:

472
a * t**3 + b * t**2 + c * t + d = 472

我不建议您像其他解决方案一样使用功能eval()