for i in range(start,stop,step)Python 3

时间:2016-04-22 08:25:06

标签: python python-3.x range

我想列出一系列数字,我正在使用“for i in range(start,stop,step)”。

def range():
    P=36
    for i in range(P+1,0,-1):
        P=P-4
        print(P)

我想将数字列为0,但它一直到-112。

我发现如果我这样做:

def test():
    P=36
    for i in range(P+1,28, -1):
        P=P-4
        print(P)

它现在将停在0。 有人可以解释为什么它这样做,并没有实际停在0?对不起,我是新手,我很困惑。我也希望列出的结果能够在之后被引用,比如将结果串在一起形成一条带有多边形的线,但不能简单地写

list(P)

而不是print(P)

2 个答案:

答案 0 :(得分:4)

要创建一个从36到0的列表,以4为单位向下倒数,您只需直接使用内置的range函数:

l = list(range(36,-1,-4)) 
# result: [36, 32, 28, 24, 20, 16, 12, 8, 4, 0]

停止值为-1,因为循环从起始值(包括)运行到停止值(不包括)。如果我们使用0作为停止值,则最后一个列表项将为4.

或者如果你喜欢for循环,例如因为你想在里面打印变量:

for P in range(36,-1,-4):
    print(P)

答案 1 :(得分:0)

发生的事情是使用范围,在开始时创建一个从36到0的列表并执行for循环37次。如果在循环中更改了循环次数,则var P不再对循环次数产生影响。

在您的第一个案例中,您将36-37*4 = -112

在你的第二种情况下,你的循环执行了9次,这就是为什么你得到0 36 -9*4 = 0:)

尝试使用xrange它应该为每个循环创建一个值,我认为它将停在0.