我想列出一系列数字,我正在使用“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)
答案 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.