Sum Series with Functions - 不断添加以前的答案?
Sum Series with Functions - Continously adding previous answers?
我正在学习 Python 中的函数概念,需要一些建议。
我正在尝试编写一个程序,该程序将对输入 1 到 20 使用代数函数 m(i) = (i) / (i + 1)
。到目前为止,我已经可以使用它了,但现在我想将所有以前的输出加在一起对于每个新输出。可能是我没有掌握其中的数学概念,这就是为什么我没有在我的代码中正确处理它。
理想情况下,这将是结果 table 我正在尝试获得:
i m(i)
1 0.50
2 1.17
...
19 16.40
20 17.35
目前我拥有的是:
def equation(i):
mi = ((i) / (i + 1))
return mi
def main():
for i in range(1,21):
print(format(i, '2d')," ",format(equation(i), '.2f'))
main()
我在 shell 中看到的输出是:
1 0.50
2 0.67
3 0.75
4 0.80
5 0.83
6 0.86
7 0.88
8 0.89
9 0.90
10 0.91
11 0.92
12 0.92
13 0.93
14 0.93
15 0.94
16 0.94
17 0.94
18 0.95
19 0.95
20 0.95
我觉得我有了一个良好的开端,但我如何才能将每行的所有 m(i) 加在一起?就像我发布的 'ideal' 示例一样,它需要 0.5 + 0.67 给出 1.17 等等。
提前致谢!
试试这个:
def equation(i):
if i <= 0:
return 0
mi = ((i) / (i + 1))
return mi + equation(i - 1)
你只需要一个累加器来保存等式(i)的值
这是我的解决方案:
def equation(i):
mi = ((i) / (i + 1))
return mi
acc = 0
for i in range(1,21):
acc += equation(i)
print(format(i, '2d')," ",format(acc, '.2f'))
你可以这样做。
#!/usr/bin/python
def equation(i):
mi = (float(i) / (i + 1))
return mi
def main():
sumOfMi = 0
for i in range(1,21):
sumOfMi+= equation(i)
print(format(i, '2d')," ",format(sumOfMi, '.2f'))
main()
你可以用发电机来做:
def equation(i):
n = 0
tot = 0
while n < i:
n += 1
mi = n/(n+n)
tot += mi
yield n, tot
def main():
for i, mi in equation(21):
print(format(i, '2d')," ",format(mi, '.2f'))
def function(i):
return i/(i+1)
e = 0
for i in range(1, 21):
print(i, end=' ')
e += function(i)
print(e)
看来您只需要将结果 return 从函数增加到 variable.Good 运气!
我正在学习 Python 中的函数概念,需要一些建议。
我正在尝试编写一个程序,该程序将对输入 1 到 20 使用代数函数 m(i) = (i) / (i + 1)
。到目前为止,我已经可以使用它了,但现在我想将所有以前的输出加在一起对于每个新输出。可能是我没有掌握其中的数学概念,这就是为什么我没有在我的代码中正确处理它。
理想情况下,这将是结果 table 我正在尝试获得:
i m(i)
1 0.50
2 1.17
...
19 16.40
20 17.35
目前我拥有的是:
def equation(i):
mi = ((i) / (i + 1))
return mi
def main():
for i in range(1,21):
print(format(i, '2d')," ",format(equation(i), '.2f'))
main()
我在 shell 中看到的输出是:
1 0.50
2 0.67
3 0.75
4 0.80
5 0.83
6 0.86
7 0.88
8 0.89
9 0.90
10 0.91
11 0.92
12 0.92
13 0.93
14 0.93
15 0.94
16 0.94
17 0.94
18 0.95
19 0.95
20 0.95
我觉得我有了一个良好的开端,但我如何才能将每行的所有 m(i) 加在一起?就像我发布的 'ideal' 示例一样,它需要 0.5 + 0.67 给出 1.17 等等。
提前致谢!
试试这个:
def equation(i):
if i <= 0:
return 0
mi = ((i) / (i + 1))
return mi + equation(i - 1)
你只需要一个累加器来保存等式(i)的值
这是我的解决方案:
def equation(i):
mi = ((i) / (i + 1))
return mi
acc = 0
for i in range(1,21):
acc += equation(i)
print(format(i, '2d')," ",format(acc, '.2f'))
你可以这样做。
#!/usr/bin/python
def equation(i):
mi = (float(i) / (i + 1))
return mi
def main():
sumOfMi = 0
for i in range(1,21):
sumOfMi+= equation(i)
print(format(i, '2d')," ",format(sumOfMi, '.2f'))
main()
你可以用发电机来做:
def equation(i):
n = 0
tot = 0
while n < i:
n += 1
mi = n/(n+n)
tot += mi
yield n, tot
def main():
for i, mi in equation(21):
print(format(i, '2d')," ",format(mi, '.2f'))
def function(i):
return i/(i+1)
e = 0
for i in range(1, 21):
print(i, end=' ')
e += function(i)
print(e)
看来您只需要将结果 return 从函数增加到 variable.Good 运气!