【问题标题】:User input a function用户输入函数
【发布时间】:2011-12-12 21:46:02
【问题描述】:

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

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

由于 x 未定义,我(完全可以预料)得到一个错误。

有没有人知道一种有效的方法来允许用户根据单个变量(例如 x)输入函数?

【问题讨论】:

标签: python function input


【解决方案1】:

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

【讨论】:

  • 如果你使用@bpgergo建议的int(raw_input(...))策略,用户可以输入一个值。
  • @Jon 是的,可以通过多种方式从用户那里获取 x 值和 function 字符串,例如从 gui 或命令行或 API
  • 我唯一可以补充的是,使用docs.python.org/library/… 可能会更好
  • @ArtsiomRudzenka 谢谢我可以编辑它,但我认为它不会评估这样的表达式
猜你喜欢
  • 2020-08-06
  • 2017-03-28
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多