2016-07-14 96 views
-2

我想要求用户输入公式,然后在函数内执行该公式。这是我迄今为止所拥有的。我已经看到如何评估一个字符串,如“2 ** 4”给予16,但我希望能够输入5 * x,所以公式为“y = 5 * x”,让func(4)返回20。Python - 将字符串输入转换为函数

formula = raw_input("y= ") 
formula = "y=%s" % formula 

def func(x): 
    formula # I have also tried eval(formula) 
    return y 

另一种方式我试图来解决,这是通过执行以下

formula = raw_input("y= ") 
formula = "y+=%s" % formula 

def func(x): 
    y = 0 
    formula # and here I tried eval(formula) again 
    return y 

这只是我用,所以我不担心被恶意代码inputed和执行。 感谢您的帮助

+6

进入到输入框结果[评估字符串中的数学表达式]可能的重复(http://stackoverflow.com/questions/2371436/evaluating-a-mathematical-expression-in-a-string) –

+0

我看着,但它似乎只工作对于特定的值输入(即2 ** 4)而不生成指定c功能(即y = 5x)其中x是该函数的输入。 – Csquared

+1

也许你可以使用SymPy。 – Evert

回答

0

你很亲近eval(假设你不关心的恶意输入):

def f(x): 
    formula = raw_input("y=") 
    return eval('%s' % formula) 

print f(3) 

运行是在6

+0

谢谢!这工作,我把公式作为输入,所以它的f(x,公式)现在只是保持外部输入,因为我不想每次调用函数时都要求用户输入。 – Csquared