2016-04-26 13 views
0

什麼是最好的方法來改變這個循環,以便new_list方程將操縱值變量,但是我可以通過直接作爲原始輸入添加到循環或通過添加一個變量?Python公式製作器

#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'對其進行評估。但是如果你不能保證輸入可以被信任,這是一個安全問題。可以輸入輸入的方式,允許用戶運行任意的shell命令... –

回答

2

如果您希望能夠輸入的公式修改循環的每個成員以同樣的方式:

# 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] 

(如果您正在使用python 2.x中,然後用raw_input而不是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 mous安全漏洞,你假設你的用戶不會輸入像__import__("os").unlink("some_file_name")這樣的方程式......

+0

謝謝,這工作好多了,雖然我不知道如何修改公式,因爲我想乘以x? –

+0

解決了這個問題,沒有添加(*)! –