2010-07-13 39 views
25
for number in range(1,101): 
print number 

有人可以向我解释为什么上面的代码打印1-100?我明白范围函数排除了指定范围内的最后一个数字,但是,语法的“数字”部分是什么?在Python中,具有`range`的for循环是如何工作的?

我更习惯于C++ & Java的地方我会写这样的代码:

for (i = 1; i<101; i++) { 
    return i; 
    i++; 
} 

那么究竟什么是“数字”?我敢肯定,我看起来太过分了,还有一个简单的问题。

+5

Java/C++代码片段将在第一个“i ++”之前因为return而停止执行。 – detly 2010-07-13 23:30:57

回答

20

number相当于i在C环的,即,它是一个可变保持每次循环迭代的值。

的Python代码到C简单的翻译会导致这些方针的东西:

for (int number = 1; number < 101; number++) { 
    printf("%d\n", number); 
} 
+0

谢谢你。这使它更容易。什么是增量过程? – TopChef 2010-07-13 23:39:49

+2

range()返回一个序列(一个行为类似于数字列表的抽象),'for number in ...'被认为'遍历序列'。在C版本中没有与序列完全类似的内容,但范围序列元素之间的关系是“增量”发生的地方。 – 2010-07-14 00:00:51

8

Python 2.7 documentation状态:

范围([开始],停止[,步])¶

这是一个多功能的功能,用于创建包含 算术演进的 列表。它最常用于循环中的 。参数必须是纯整数 整数。如果省略step参数为 ,则默认为1.如果省略了 开始参数,则它将默认 设置为0.完整形式将返回一个列表 纯整数[start,start + step, start + 2 * step ,...]。如果步骤为 为正,则最后一个元素为 最大的起始+ i *步长小于 停止;如果步骤是否定的,则最后一个 元素是最小的开始+ i * 步骤大于停止。一步不能 为零(或者ValueError被挂起)

编辑:您可能也想看看xrange。 编辑:所以基本上:

for (start ; stop ; step) 
range(start, stop, step) // where start and step are optional 
0

数目是其中在范围内的每个值被放置在变量。

range实际上会返回一个迭代器,for负责将它推进到范围内。

0

范围是号码1到100

number列表,然后引用的每个对象在该列表中

1

正如JG说,数量是您的变量(很像在C代码i)。 python中的for循环实际上就像C#中的foreach循环(我认为Visual C++也有它)。基本上,它遍历一个容器。因此,您可以在列表中使用该语法:

fib = [0,1,1,2,3,5,8] 
for number in fib: 
    print number 

范围对象的行为类似于容器,包含a和b之间的所有数字。

1

这是用Python程序员新有在面向对象的语言或过程语言(C,Java的等)

这些语言之间的区别是,Python不支持的经验稍显混乱的问题“计数“样迭代是不断在C,爪哇等使用:

for(i = 0; i < 10; i++){ 
... 
} 

相反,Python中只实现了对于类似于面向对象的语言的Iterator接口(Java程序员将熟悉此):

for object in object_list 
    .... 

所以,在你的例子“范围” [1101]为含有1〜100和“号码”的所有数字的列表(object_list中)的是,需要每一个数字的位置迭代器(对象)