用户输入的功能
我正在写涉及计算的最大用户定义的函数的程序,但是如果用户在例如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