我需要协助进行作业。我需要使用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):
我不知道为什么,但我只是想让这个方程式发挥作用。任何帮助将不胜感激。
答案 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)
方法为您提供从x
到y-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)