我是一个新手和学习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'循环来实现这一点,我会很好奇吗?
答案 0 :(得分:1)
range
在您的for循环开始时调用该函数时创建一个固定列表。您可以将for循环的顶部视为将n2
分配给该列表的下一个元素,无论您在循环中执行什么操作。如果要更改范围的周期,请使用第三个参数:
range(n, 20, period)
将按大小period
的步长移动到范围内,而不是步长为1的步骤。
答案 1 :(得分:0)
它不会以您期望的方式工作。表达式range(int(n2), 20)
仅在for循环开始时被评估一次。你不能以这种方式改变for循环的范围。
您可以修改的是range
函数中的step
参数,但它不会改变您的起点 - 它只定义迭代过程中的下一个元素。