SHA*_*AIN 0 python for-loop python-3.x
让我们假设这个系列
1+2+3+....+n
Run Code Online (Sandbox Code Playgroud)
在带有for循环的c中,我们可以轻松完成此操作
for(i=1;i<=n;i++)
{
sum += i;
}
Run Code Online (Sandbox Code Playgroud)
在python我能够使用while循环完成此操作
while(num <= n):
sum += num
num = num+1
Run Code Online (Sandbox Code Playgroud)
但我无法使用python for循环来做到这一点
Python语法与c略有不同.特别是,我们通常使用range函数来创建迭代器变量的值(这是Stephen Rauch的评论中的内容).第一个参数range是起始值,第二个参数是最终值(不包括),第三个参数是步长(默认值为1).如果只提供一个值(例如range(5)),则起始值为0,提供的值为结束值(相当于range(0, 5)).
这样你就可以做到
for i in range(1, n + 1):
Run Code Online (Sandbox Code Playgroud)
创建一个for循环,其中i的值与c循环中的值相同.您的代码的完整版可能是:
summation = 0
for i in range(1, n + 1):
summation += i # shorthand for summation = summation + i
Run Code Online (Sandbox Code Playgroud)
但是,由于求和事情很常见,因此有一个内置函数sum可以为你做这个,不需要循环.你只需传递一个可迭代的(例如一个列表,一个元组,......),它将返回所有项目的总和.因此,上面的for循环等同于更短的循环
summation = sum(range(1, n + 1))
Run Code Online (Sandbox Code Playgroud)
请注意,因为sum是内置函数的名称,所以不应将其用作变量名称; 这就是我在summation这里使用的原因.
因为你可能会发现这对Python有用,所以你可以直接循环迭代的元素也很好.例如,如果我有一个名单列表并想为每个人打印问候语,我可以采用"传统"方式:
names = ["Samuel", "Rachel"]
for i in range(len(names)): # len returns the length of the list
print("Hello", names[i])
Run Code Online (Sandbox Code Playgroud)
或者以更简洁的"Pythonic"方式:
for name in names:
print("Hello", name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4389 次 |
| 最近记录: |