2016-04-26 10 views
0

このループを変更してnew_list方程式が値変数を操作するようにするには、どのような方法が最適ですか?ただし、生の入力としてループに直接追加するか、変数?Python Equation Maker

#Creating the equation 
def f(a_list): 
    new_list = [] 
    for value in a_list: 
     new_list += [2 * (value**3) - 1] 
    return new_list 
+0

あなたの質問を明確にしてください。実行時に方程式を変更したいですか? –

+0

@RafiGoldfarbだから実行時に変更できるようにしたいので、式2(値^ 3)-1を変更したい場合、実行時に実行できるようにする –

+0

**信頼すれば**あなたのスクリプトを操作する場合、最も簡単な方法は、有効なPython構文で式を入力として求めてから、 'eval'を使って式を評価することです。しかし、入力を信頼できると保証できない場合、これはセキュリティ上の問題です。入力は、ユーザーが任意のシェルコマンドを実行できるように入力することができます... –

答えて

2

あなたがループのすべてのメンバーを同じ方法で変更するための式を入力できるようにしたい場合:あなたはraw_inputではなくを使用し、その後、Pythonの2.xのを使用している場合

# python3 version 
def f(a_list): 
    eqn = input("Please enter an equation, using 'x' as the variable: ") 
    return [eval(eqn) for x in a_list] 

を(その後input

>>> f(range(10)) 
Please enter an equation, using 'x' as the variable: x + 2 
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 

これはもちろんENORですあなたのユーザーが等式のような__import__("os").unlink("some_file_name")のようなものを入力しないと想定しているセキュリティホール。

+0

xを乗算したいときの方程式を変更する方法がわかりませんが、ありがとうございます。 –

+0

これを解決しましたが、(*)を追加していませんでした。 –