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)
要创建一个从 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)
发生的情况是,使用 range 在开头创建一个从 36 到 0 的列表,并执行 for 循环 37 次。如果您在循环中更改它,您的 var P 将不再影响循环数。
在你的第一种情况下,你会有36-37*4 = -112
在第二种情况下,你的循环执行了 9 次,这就是为什么你得到 0 36 -9*4 = 0:)
尝试使用 xrange 它应该为每个循环创建一个值,我认为它会停止在 0 处。