如何在运行时从 python 中的输入字符串定义函数?

How to define function from input string in python at runtime?

我正在尝试解决 UVA 11036。它需要在运行时定义函数。

例如:我必须将输入 (2*x + 7) % N 作为字符串并在运行时定义一个函数,例如 func = lambda x : (2*x + 7) % N 来处理它。请帮助我找出如何在运行时将字符串转换为函数。

这似乎是个有趣的谜语,所以如果你想用C++解决它有两种方法。困难的方法是使用 Shunting-yard algorithm 等算法实现一个小型数学解析器。或者,如果您熟悉 C++ 中的库链接,最好使用数学表达式解析器库。 Internet 上有很多图书馆。在这里,我推荐其中之一如下。

mathematical expression library I personalty have tested it and obviously is fast. you can clone source code 在 GitHub

无论如何,您无法使用 lambda 函数 解决这种情况,因为输入是一个数学表达式,您应该在运行时对其进行解析和计算。

如果您使用 python,请参阅 this post

您可以使用 exec 从字符串定义函数。但是,这允许将任何代码注入您的程序。但因为它只是为了解决这个挑战,所以可能没问题。

exec 'func = lambda x : '+input