繁体   English   中英

每次迭代的更改范围均始于Python“ for循环”

[英]Change range start in Python 'for loop' for each iteration

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

我的问题是:如果将起点分配给变量,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”循环来完成此操作吗?

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

range(n, 20, period)

将在整个范围内以大小period的步长而不是大小1的步长移动。

它不会以您期望的方式工作。 表达式range(int(n2), 20)在for循环开始时仅被评估一次。 您不能以这种方式更改for循环的范围。

您可以修改的是range函数中的step参数,但不会更改您的起点-它仅定义迭代过程中的下一个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM