我想编写一个求和函数,但无法弄清楚如何解析底部表达式和正确表达式。
def summation(count: float, bottom_var: str, espression: str):
out = 0
for char in bottom_var:
pass # somehow parse
for char in expression:
pass # somehow parse
我希望您能够像正常sigma表示法一样使用输入,如bottom_var
is 'n=13'
,not '13'
。
编辑:为澄清起见,我的意思是我希望某人能够在bottom_var
,下输入一个作业,然后该作业可在中使用expression
,但无其他地方。
例:
summation(4, 'x=1', 'x+1')
(将返回14,因为2 + 3 + 4 + 5 = 14)
首先,解析bottom_var
以获得符号和起始值:
var, value = bottom_var.split('=')
var = var.strip()
value = eval(value)
使用split
我们很容易得到等号的两个部分。使用strip
我们甚至可以允许任意数量的空格,例如x = 1
。
然后,我们要创建一个从起始值到的循环count
:
for i in range(value, count+1):
...
最后,我们想使用循环求和,expression
每次用当前迭代值替换符号时。总而言之:
def summation(count: int, bottom_var: str, expression: str):
var, value = bottom_var.split('=')
var = var.strip()
value = eval(value)
res = 0
for i in range(value, count+1):
res += eval(expression.replace(var, str(i)))
return res
例如:
>>> summation(4, 'x=1', 'x+1')
14
在此答案中提出代码,我觉得有必要请您阅读为什么使用'eval'是一种不好的做法?并请确保您的应用程序正常。请注意,根据使用代码的上下文,使用eval
可能非常危险并导致不良结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句