使用For循环查找序列表达式[1/1 + 1/2 + 1/3 ... 1/1000]

时间:2018-11-25 06:10:41

标签: python for-loop math sequence

我需要协助进行作业。我需要使用python找出如何创建“ for循环”以执行以下操作:

Series 1/1+1/2+1/3+1/4+...+1/1000 (which is expressed as 1000. ∑ n=1. 1 n ≈. 7.49)

我需要程序遍历所有这些,并打印出每个数字。 示例:

998 7.483469855949342

999 7.48447086055343

1000 7.485470860550343

我目前掌握的基本信息是

for x in range(1, 1000):

我不知道为什么,但我只是想让这个方程式发挥作用。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

您正在朝正确的方向前进。在for循环之前,您需要一个sum变量,用于存储1/x的总和。

您可以通过类似的方式进行操作:

sum = 0
for x in range(1, 1001):
    sum += (1/x)
    print(sum, x)

在这里,我将sum变量初始化为0。此后,我对[1,1000](包括两者)的值进行x迭代。我发现1/x并将其添加到总和中。接下来,根据需要打印值。

注意:range(x, y)方法为您提供从xy-1

的范围

答案 1 :(得分:1)

itertools是您最好的朋友。提出的答案是正确的,但对于大数据而言会很慢。如果我是你,我会做:

import itertools

a = map(lambda x:1/x,range(1,1001))

#print(list(itertools.accumulate(a)))

for i, j in enumerate(1,itertools.accumulate(a)):
    print(i,j)

说明:lambda x:1 / x创建了将n转换为1 / n的即时函数。 map将该函数映射到从1到1000的值范围。然后将其传递给累加值1/1 + 1/2 .....;)

答案 2 :(得分:0)

请记住,python2将为1 / x返回0,并且您的总和最终将为1。为了获得float输出(即0.25为1/4),必须将其中一个数字转换为float(1或x)。因此,正确的方法是

sum = 0
for x in range(1, 1001):
    sum += (float(1)/x)
    print(sum, x)