对于我在范围内(开始,停止,步骤)Python 3

Mas*_*son 4 python range python-3.x

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

def range():
    P=36
    for i in range(P+1,0,-1):
        P=P-4
        print(P)
Run Code Online (Sandbox Code Playgroud)

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

我发现如果我这样做:

def test():
    P=36
    for i in range(P+1,28, -1):
        P=P-4
        print(P)
Run Code Online (Sandbox Code Playgroud)

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

list(P)
Run Code Online (Sandbox Code Playgroud)

代替 print(P)

Byt*_*der 7

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

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

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

或者,如果您更喜欢 for 循环,例如因为您想在其中打印变量:

for P in range(36,-1,-4):
    print(P)
Run Code Online (Sandbox Code Playgroud)


arc*_*ess 0

发生的情况是,使用 range 在开头创建一个从 36 到 0 的列表,并执行 for 循环 37 次。如果您在循环中更改它,您的 var P 将不再影响循环数。

在你的第一种情况下,你会有36-37*4 = -112

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

尝试使用 xrange 它应该为每个循环创建一个值,我认为它会停止在 0 处。