代码之家  ›  专栏  ›  技术社区  ›  Hanzy

在Python中更改每次迭代的“for循环”开始范围

  •  0
  • Hanzy  · 技术社区  · 7 年前

    我是个新手,正在学习python(使用2.7)。我正在尝试一些简单的脚本来测试python如何处理不同类型的循环。

    我的问题是:如果将“range”函数的起点指定给变量,python能否在每次迭代中更改该函数的起点?下面是我的代码示例:

    def build(n, period):
        n2 = n
        for digit in range(int(n2), 20):
            print "At the top i is %d" % n
            digit += period
            numbers.append(digit)
    
            print "Numbers now:", numbers
            print "At the bottom i is %d" % digit
    
            print "The Numbers:"
            n2 += period
    
            for num in numbers:
                print num
    
    
    key = raw_input("Press 1 to call function \"build\", press any other key to quit.")
    if key == "1":
        i = raw_input("What integer is our start value?")
        amt = raw_input("What is the common difference?")
        numbers = [int(i)]
        build(int(i),int(amt))
    
    else:
        quit()
    

    我试图在函数中使用第二个局部变量“n2”,这样我可以保持“n”的初始值不变,然后重新定义每次迭代的范围。附加列表中的第一个数字按公共差移动,但在这之后,它总是按+1整数步进。我可以很容易地通过“while”循环实现这一点,但很好奇是否可以使用“for”循环来实现这一点?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Jean-François Fabre    7 年前

    range 在for循环开始时调用该函数时,创建一个固定列表。可以将for循环的顶部视为赋值 n2 到该列表的下一个元素,无论您在循环中做什么。如果要更改范围的周期,请使用第三个参数:

    range(n, 20, period)
    

    period 而不是一级台阶。

        2
  •  0
  •   Szymon Stepniak    7 年前

    它不会以你期望的方式工作。表示 range(int(n2), 20)

    step range 函数,但它不会改变您的起点——它只定义迭代过程中的下一个元素。