2016-07-14 11 views
-2

私はユーザーに式を求め、その式を関数内で実行したいと考えています。これは私がこれまで持っていたものです。私は16を与えるために "2 ** 4"のような文字列を評価する方法を見てきましたが、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 

私はこれを回避しようとしたもう一つの方法は、私がinputedおよび実行されている悪質なコードについて心配していないので、使用するためだけにこれは、次の

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

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

を行うことです。助けを おかげであなたはevalとかなり近いです

+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

(あなたが悪意のある入力を気にしないと仮定した場合):

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

print f(3) 

はそれを実行し、6

+0

ありがとう!これは関数f(x、formula)を入力として入力して関数を呼び出すたびにユーザーに入力を要求したくないので入力を外部に保ちました。 – Csquared

関連する問題