所以,我的代码是这样的:强制功能参数是一个字符串
def func(s,x):
return eval(s.replace('x',x)
#Example:
>> func('x**2 + 3*x',1)
4
功能func
的第一个参数必须是一个字符串,因为该功能eval
只接受字符串或代码对象。然而,我想在一种计算器中使用这个函数,用户输入例如2 + sin(2*pi-0.15) + func(1.8*x-32,273)
并获得表达式的答案,并且总是必须在func()
之前的表达式中编写引号。
有没有办法让python明白s
参数总是一个字符串,即使它不在引号之间?
我对我想要的一个好主意:为了让用户更容易,我可以在评估之前解析表达式,并在解析过程中添加引号。用这种方式,用户不需要输入恼人的引号。 (我忘了说表达式是在GUI的文本条目中输入的) – 2013-04-23 02:06:50