为什么以下范围不能在python中打印出来?

时间:2013-09-15 18:59:17

标签: python range

我在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)?

2 个答案:

答案 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之间的数字,与第二个函数相反