我需要知道如何将传输字符串输入到可执行函数中。 例如 - 用户写字符串' x * Sin(x ** 2)'然后programm将其作为函数,可以计算给定x的值,可以绘制该函数的推导等。我已经读过有一个名为scitools.stringfunction的模块,但据我所知这个模块不可调用在python-3中。
任何想法如何制作?
答案 0 :(得分:4)
f = lambda x: input() # the user inputs: x**2 + 1
y = f(3)
print y # outputs: 10
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
相对的数学库的优点是您不需要清理用户输入(针对恶意代码)。