所以我试图从Excel工作表中调用值以在python中的函数中使用。我希望代码将代码中定义的变量乘以一个单元格中的值,然后再添加另一个单元格中的另一个值。我正在使用解析器来定义表达式。这就是我写的:
beam_energy = 12
import parser
for a in range(1,4):
formula = "energy_vs_stopping_power_functions.cell(a,1).value*x"
energy = parser.expr(formula).compile()
x = beam_energy
print eval(energy) + energy_vs_stopping_power_functions.cell(a,2).value
这段精确的代码在几分钟之前就可以正常使用,并且给了我正确的值,但无论出于何种原因,它现在只返回"TypeError: 'float' object is not callable."
我不知道出了什么问题,特别是因为字面意思确切代码刚刚起作用。
有没有更简单的方法来评估python中的线性函数?
答案 0 :(得分:0)
首先 - 评估线性函数的更简单方法:
def make_linear_fn(a, b):
def linear_fn(x):
return a * x + b
return linear_fn
energy = linear_fn(-200., 1800.)
energy(5) # returns 800.0 (== -200.0 * 5 + 1800.0)
第二:这个
for a in range(1,4):
formula = "energy_vs_stopping_power_functions.cell(a,1).value*x"
energy = parser.expr(formula).compile()
x = beam_energy
print eval(energy)
可以简化为
for a in range(1, 4): # produces 1, 2, 3
print(evspf.cell(a, 1).value * beam_energy)