0

我在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=' ')

它打印出预期的结果,第一个不起作用的原因是什么?

PS,我在python教程中找到了以下示例代码:

range(-10, -100, -30)
  -10, -40, -70

那么为什么这有效,只是因为它添加了一个步骤(-30)?

4

2 回答 2

3

函数的默认step值为。因此,要使您的范围起作用,您的第一个参数()必须小于第二个参数()。range()1startend

如果您的第一个参数(start)大于第二个参数(end),您永远无法end通过添加步骤来达到该值1to start。在这种情况下,您可以给出一个-1相反方向的步长值:

for i in range(-10, -100, -1):

nowi将取值-10, -11, -12, 依此类推,直到-99

于 2013-09-15T19:02:19.373 回答
0

range([start ,] stop [, range])对具有正范围(默认为 1)的函数的小模拟是

def range(start, stop, range):
    lst = []
    while start < stop:
       lst += [start]
       start += range
    return lst

所以 ifrange(-10, -100)会失败start < stop,因此不会打印任何内容。

但是,如果您使用range(-10, -100, -1),则范围为负,因此模拟将通过替换start < stop为 来不同start > stop。它会工作,但是会打印从 -10 到 -99 的数字,与第二个函数相反

于 2013-09-15T19:07:00.017 回答