将数学函数作为用户的输入

时间:2017-04-29 12:01:51

标签: python python-3.x function input

我需要知道如何将传输字符串输入到可执行函数中。 例如 - 用户写字符串' x * Sin(x ** 2)'然后programm将其作为函数,可以计算给定x的值,可以绘制该函数的推导等。我已经读过有一个名为scitools.stringfunction的模块,但据我所知这个模块不可调用在python-3中。

任何想法如何制作?

2 个答案:

答案 0 :(得分:4)

对于Python 2.X

f = lambda x: input() # the user inputs: x**2 + 1
y = f(3)
print y # outputs: 10

对于Python 3.X

f = lambda x: eval(input())
y = f(5)
print y

只需确保import所需的数学函数。并确保用户输入有效的Python 算术表达式。

答案 1 :(得分:3)

使用sympy你可以这样做:

from sympy import var
from sympy import sympify

x = var('x')  # the possible variable names must be known beforehand...
user_input = 'x * sin(x**2)'
expr = sympify(user_input)
res = expr.subs(x, 3.14)
print(res)  # -1.322...

如果您想将用户输入转换为函数,您可以调用此函数:

from sympy.utilities.lambdify import lambdify
f = lambdify(x, expr)
# f(3.14) -> -1.322...
同情可以做sybolic计算(包括衍生物);如果你想制作情节我强烈建议matplotlib

使用与eval相对的数学库的优点是您不需要清理用户输入(针对恶意代码)。