【问题标题】:Change range start in Python 'for loop' for each iteration每次迭代在 Python 'for loop' 中更改范围开始
【发布时间】:2017-08-01 17:47:06
【问题描述】:

我是新手,正在学习 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”循环来完成此操作?

【问题讨论】:

  • 如果您正在寻找其他循环,您可以使用 while 循环 - while n2 < 20: n2+= period。此外,您还必须将 numbers 数组传递给函数。否则,您可以将其称为全局变量。

标签: python python-2.7 for-loop


【解决方案1】:

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

range(n, 20, period)

将在范围内以period 的步长移动,而不是一号步。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如何让索引越界?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多