我正在创建一个 sigsum() 函数,该函数使用输入方程和输入变量求和。这是我到目前为止所拥有的:
def sigsum(eqn, index, lower=0, upper=None, step=1):
if type(step) is not int:
raise TypeError('step must be an integer')
elif step < 1:
raise ValueError('step must be greater than or equal to 1')
if upper is None:
upper = 1280000
if lower is None:
lower = -1280000
if (upper - lower) % step:
upper -= (upper - lower) % step
index = lower
total = 0
while True:
total += eqn
if index == upper:
break
index += step
return total
函数用法:
print(sigsum('1/(i+5)','i'))
>>> 12.5563
我当前的问题是将“eqn”和“index”转换为函数本地命名空间中存在的变量。我听说使用 exec 不是一个好主意,也许 setattr() 可能会起作用。谁能帮我吗?谢谢。