让我们假设这个系列
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
答案 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))