用户输入的功能

问题描述:

我正在写涉及计算的最大用户定义的函数的程序,但是如果用户在例如x变量的术语进入的函数,即用户输入的功能

input = x**2 + 2*x + 1 

I(相当期待)由于未定义x而出现错误。

有谁知道一个有效的方法来允许用户输入一个函数的单一变量,如x?

+0

请看这里:http://stackoverflow.com/questions/594266/equation-parsing-in-python – KCH

+0

int(raw_input(“请输入x”))http://docs.python.org/library/functions .html#raw_input – bpgergo

如果您不担心安全性,最简单的解决方案是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字典,但仍我觉得有些聪明的代码将能够访问你的代码的内部。

+0

然后,如果您使用@bpgergo建议的'int(raw_input(...))'策略,那么用户可以输入一个值。 – Jon

+1

@Jon yes可以有多种方式从用户获得'x'值和'函数'字符串,从gui或命令行或API –

+0

我唯一可以补充的,也许会更好地使用http://docs.python.org/library/ast.html?highlight=eval#ast.literal_eval –