2016-07-14 59 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