用户输入功能

时间:2011-12-12 21:46:02

标签: python function input

我正在编写一个涉及计算用户定义函数最大值的程序,但是如果用户根据x等变量输入函数,即

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

我(相当期待)因为未定义x而得到错误。

是否有人知道允许用户根据单个变量(如x)输入函数的有效方法?

1 个答案:

答案 0 :(得分:2)

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