什麼是最好的方法來改變這個循環,以便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
什麼是最好的方法來改變這個循環,以便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
如果您希望能夠輸入的公式修改循環的每個成員以同樣的方式:
# 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")
這樣的方程式......
謝謝,這工作好多了,雖然我不知道如何修改公式,因爲我想乘以x? –
解決了這個問題,沒有添加(*)! –
你能澄清一下你的問題嗎?你想在運行時改變公式嗎? –
@RafiGoldfarb所以我想在運行時改變它,所以如果我想改變公式2(值^ 3)-1,我將能夠在運行時 –
如果你信任**用戶使用腳本進行操作,最簡單的方法是以有效的Python語法請求公式作爲輸入,然後使用'eval'對其進行評估。但是如果你不能保證輸入可以被信任,這是一個安全問題。可以輸入輸入的方式,允許用戶運行任意的shell命令... –