在python中使用for循环的系列求和

时间:2018-04-04 02:21:05

标签: python python-3.x for-loop

让我们假设这个系列

1+2+3+....+n

c for loop 我们可以轻松完成此操作

for(i=1;i<=n;i++)
{
    sum += i;
}

python 我可以使用 while循环

完成此操作
while(num <= n):

      sum += num
      num = num+1

但我无法使用python for loop

3 个答案:

答案 0 :(得分:5)

Python语法与c略有不同。特别是,我们通常使用range函数来创建迭代器变量的值(这是Stephen Rauch的评论中的内容)。 range的第一个参数是起始值,第二个参数是最终值(不包括),第三个参数是步长(默认值为1)。如果您只提供一个值(例如range(5)),则起始值为0,提供的值为结束值(相当于range(0, 5))。

因此你可以做到

for i in range(1, n + 1):

创建一个for循环,其中i采用与c循环中相同的值。您的代码的完整版可能是:

summation = 0
for i in range(1, n + 1):
    summation += i # shorthand for summation = summation + i

然而,由于求和事情很常见,因此有一个内置函数sum可以为你做这个,不需要循环。你只需传递一个可迭代的(例如一个列表,一个元组,......),它将返回所有项目的总和。因此,上面的for循环相当于更短的

summation = sum(range(1, n + 1))

请注意,因为sum是内置函数的名称,所以不应将其用作变量名;这就是我在这里使用summation的原因。

因为你可能会发现这对Python很有用,所以你可以直接循环迭代的元素也很好。例如,如果我有一个名单并希望为每个人打印问候语,我可以采用“传统”方式:

names = ["Samuel", "Rachel"]
for i in range(len(names)):  # len returns the length of the list
    print("Hello", names[i])

或以更简洁的“Pythonic”方式:

for name in names:
    print("Hello", name)

答案 1 :(得分:2)

对于系列构建列表,然后将它们全部添加为

n = 10
sum(range(n+1))
  

55

我们有1 / n

n = 5
sum([1/i for i in range(1,n+1)])
  

2.28333

对于1 / n ^ 2我们有

n = 5
sum([1/i**2 for i in range(1,n+1)])
  

1.463611

答案 2 :(得分:1)

这在 Python

中对我有用
def summation(num): 
sumX = 0
for i in range(1, num + 1):
    sumX = sumX + i
return sumX

summation(3) #You place the num you need here

我从这个练习中得到了它:编写一个程序,找出从 1 到 num 的每个数字的总和。该数字始终是大于 0 的正整数。

还有这个:

def summation(num):
return sum(range(1, num+1))