Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用For循环查找序列表达式[1/1+;1/2+;1/3…1/1000]_Python_For Loop_Math_Sequence - Fatal编程技术网

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

Python 使用For循环查找序列表达式[1/1+;1/2+;1/3…1/1000],python,for-loop,math,sequence,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 i

我需要协助完成一项任务。我需要使用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):

我不知道为什么,但我只是在努力让这个等式在我的脑海中起作用。任何帮助都将不胜感激

你正朝着正确的方向前进。在
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
,并将其添加到总和中。接下来,我将根据您的需要打印这些值


注意:
范围(x,y)
方法为您提供了从
x
y-1的范围,您正朝着正确的方向前进。在
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
,并将其添加到总和中。接下来,我将根据您的需要打印这些值


注意:
范围(x,y)
方法为您提供从
x
y-1
的范围。请记住,python2将为1/x返回0,并且您的总和最终将为1。为了获得浮点输出(即1/4为0.25),必须将其中一个数字转换为浮点(1或x)。因此,正确的方法是

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

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

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

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。映射将该函数映射到从1到1000的值范围。然后我将其传递给累加1/1+1/2….;)

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。映射将该函数映射到从1到1000的值范围。然后我将其传递给累加1/1+1/2….;)

好极了!我在这里看到的唯一问题是,您正在将值存储到内存中。这意味着在处理大数据时要缓慢@丹尼尔,你说得对,不过这似乎是个初学者的问题。我想,现在(在这个级别上)我们不应该施加在内存中存储变量的缓慢性的影响。我认为出于教程的目的,这是可以的,但如果它是一个生产代码,效率是首选。好极了!我在这里看到的唯一问题是,您正在将值存储到内存中。这意味着在处理大数据时要缓慢@丹尼尔,你说得对,不过这似乎是个初学者的问题。我想,现在(在这个级别上)我们不应该施加在内存中存储变量的缓慢性的影响。我认为出于教程的目的,这是可以的,但如果它是一个生产代码,效率是首选。或者你可以从未来导入部门。来自未来进口部。Python2部门将被3取代,一切照旧:)或者您可以从将来导入部门。来自未来进口部。Python 2部门将被3取代,一切照旧:)