我在python中有以下代码:
def main():
for i in range(-10, -100):
print(i, end=' ')
if __name__ == '__main__':
main()
但它没有打印出来,但如果我将主要功能更改为:
def main():
for i in range(-100, -10):
print(i, end=' ')
打印出预期的结果,第一个不起作用的原因是什么?
P.S,我在python教程中找到了以下示例代码:
range(-10, -100, -30)
-10, -40, -70
然后为什么会这样,只是因为它增加了一个步骤(-30)?
答案 0 :(得分:3)
range()
函数的默认step
值为1
。因此,要使您的范围起作用,您的第一个参数(start
)必须小于第二个参数(end
)。
如果您的第一个参数(start
)大于第二个参数(end
),则通过向end
添加1
的步骤,您永远无法达到start
值{1}}。在这种情况下,您可以给步骤值-1
以反方向:
for i in range(-10, -100, -1):
现在i
将获取值-10
,-11
,-12
,依此类推,直到-99
。
答案 1 :(得分:0)
具有正范围(默认为1)的函数range([start ,] stop [, range])
的小模拟是
def range(start, stop, range):
lst = []
while start < stop:
lst += [start]
start += range
return lst
因此如果range(-10, -100)
失败start < stop
,则不会打印任何内容。
但是,如果您使用range(-10, -100, -1)
,则范围为负数,因此将start < stop
替换为start > stop
,模拟会有所不同。它会工作,但是会打印-10到-99之间的数字,与第二个函数相反