我正在寫涉及計算的最大用戶定義的函數的程序,但是如果用戶在例如x變量的術語進入的函數,即用戶輸入的功能
input = x**2 + 2*x + 1
I(相當期待)由於未定義x而出現錯誤。
有誰知道一個有效的方法來允許用戶輸入一個函數的單一變量,如x?
我正在寫涉及計算的最大用戶定義的函數的程序,但是如果用戶在例如x變量的術語進入的函數,即用戶輸入的功能
input = x**2 + 2*x + 1
I(相當期待)由於未定義x而出現錯誤。
有誰知道一個有效的方法來允許用戶輸入一個函數的單一變量,如x?
如果您不擔心安全性,最簡單的解決方案是eval
表達式,例如
def calculate(value, function):
x = value
return eval(function)
print calculate(2, "x**2 + 2*x + 1")
print calculate(2, "x**3 - x**2 + 1")
輸出:
9
5
你可以使它更安全通過傳遞一個空builtin
字典,但仍我覺得有些聰明的代碼將能夠訪問你的代碼的內部。
然後,如果您使用@bpgergo建議的'int(raw_input(...))'策略,那麼用戶可以輸入一個值。 – Jon
@Jon yes可以有多種方式從用戶獲得'x'值和'函數'字符串,從gui或命令行或API –
我唯一可以補充的,也許會更好地使用http://docs.python.org/library/ast.html?highlight=eval#ast.literal_eval –
請看這裏:http://stackoverflow.com/questions/594266/equation-parsing-in-python – KCH
int(raw_input(「請輸入x」))http://docs.python.org/library/functions .html#raw_input – bpgergo