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

问题描述

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

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

解决方法

似乎令人着迷,所以如果要在C ++中解决它,有两种方法。困难的方法是使用诸如Shunting-yard algorithm之类的算法来实现小型数学解析器。或者,相反,如果您熟悉C ++中的库链接,则最好使用数学表达式解析器库。 Internet上有很多图书馆。在这里,我建议如下之一。

mathematical expression library我个人已经对其进行了测试,显然速度很快。您可以在GitHub中克隆source code

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

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

,

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

exec 'func = lambda x : '+input