【问题标题】:for i in range(start,stop,step) Python 3对于我在范围内(开始,停止,步骤)Python 3
【发布时间】:2016-04-22 08:25:05
【问题描述】:

我想列出一个数字范围,我正在使用“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)

【问题讨论】:

  • 您的第一个示例应该引发 TypeError,因为您使用自定义函数覆盖 range,因此它会递归调用自身,并且由于参数编号不同,这不起作用。在你的第二个例子中,缩进被破坏了。

标签: python python-3.x range


【解决方案1】:

要创建一个从 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)

【讨论】:

    【解决方案2】:

    发生的事情是,使用范围,在开始时为您创建一个从 36 到 0 的列表,并执行 37 次 for 循环。如果您在循环中更改它,则您的 var P 不再影响循环数。

    在您的第一种情况下,您将拥有36-37*4 = -112

    在第二种情况下,你的循环执行了 9 次,这就是为什么你得到 0 36 -9*4 = 0 :)

    尝试使用 xrange 它应该为每个循环创建一个值,我认为它会在 0 处停止。

    【讨论】:

      猜你喜欢
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多