Skip to main content
 首页 » 编程设计

python之range() 函数给我带来了麻烦

2025年05月04日14bjzhanghao

如果我输入这样的内容,我会得到这些值:

print range(1,10)  
[1,2,3,4,5,6,7,8,9] 

但是如果我想在 for 循环中使用相同的值,那么它将从 0 开始,这就是我的意思的一个例子:

for r in range(1,10): 
    for c in range(r):  
        print c, 
    print "" 

输出是这样的:

0  
0 1  
0 1 2  
0 1 2 3  
0 1 2 3 4  
0 1 2 3 4 5  
0 1 2 3 4 5 6  
0 1 2 3 4 5 6 7  
0 1 2 3 4 5 6 7 8 

这里为什么是0?它不应该从 1 开始到 9 结束吗?

请您参考如下方法:

您正在循环中创建第二个 range() 对象。默认起始值​​为 0。

您在 range(r) 上创建一个循环的每次迭代,意味着 范围从 0 到 r,不包括,以产生输出数字.对于 range(1),这意味着您得到一个列表,其中只有 [0],对于 range(1),您得到 [0, 1] 等

如果你想产生从 1 到 r inclusive` 的范围,只需在你实际打印的数字上加 1:

for r in range(1,10): 
    for c in range(r):  
        print c + 1, 
    print "" 

或范围从 1 到 r + 1:

for r in range(1,10): 
    for c in range(1, r + 1):  
        print c, 
    print "" 

两者都会产生您预期的输出:

>>> for r in range(1,10): 
...     for c in range(r):  
...         print c + 1, 
...     print "" 
...  
1  
1 2  
1 2 3  
1 2 3 4  
1 2 3 4 5  
1 2 3 4 5 6  
1 2 3 4 5 6 7  
1 2 3 4 5 6 7 8  
1 2 3 4 5 6 7 8 9  
>>> for r in range(1,10): 
...     for c in range(1, r + 1):  
...         print c, 
...     print "" 
...  
1  
1 2  
1 2 3  
1 2 3 4  
1 2 3 4 5  
1 2 3 4 5 6  
1 2 3 4 5 6 7  
1 2 3 4 5 6 7 8  
1 2 3 4 5 6 7 8 9