每次迭代在Python'循环'中更改范围开始
问题描述:
我是一个新手和学习python(使用2.7)。我正在尝试一些简单的脚本来测试python如何处理不同类型的循环。每次迭代在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(int(n2), 20)
在for循环的开始只获得一次评估。你不能以这种方式改变for循环的范围。
您可以修改的是range
函数中的step
参数,但它不会改变您的出发点 - 它仅定义迭代过程中的下一个元素。
+0
你将如何获得索引越界? –
答
range
在您for循环开始时调用该函数的那一刻创建一个固定列表。您可以将for循环的顶部想象为将n2
分配给该列表的下一个元素,而不管您在循环中做什么。如果你想改变的范围内的期间,使用第三个参数:
range(n, 20, period)
规模将period
的措施,通过范围内移动的大小为一步骤操作。
如果你正在寻找其他循环,你可以使用'while'循环 - 'n2