我正在学习Python,我遇到了'for循环'的事情。假设我有一个程序要求5个数字。我知道这是毫无意义的,但这对一个例子来说是好的。无论如何,如果我这样做,它就不会重新开始它的循环。
myNumbers = []
for x in xrange(5):
try:
myNumbers.append( int(raw_input()) )
except ValueError:
myNumbers = []
x = -1
我认为如果我将x重置为-1,它会让for循环继续运行,但它永远不会重启。它仍仅 5 次。我把-1放在那里的原因是因为x在此之后会重新计数到0。我试图找到解决方案,但没有。谢谢你,如果你试图帮助我。
答案 0 :(得分:2)
xrange()
(或range()
)被称为生成器函数,x类似于local variable
,for循环将循环中的下一个值分配给。{/ p>
xrange()
返回参数1中给出的范围内的值,for循环将该值赋给变量x。因此,即使您在循环中更改x的值,xrange()也不知道这样的更改,并且仍然会提供范围中的下一个值。
生成器函数示例 -
def myrange(a):
i = 0
while i < a:
yield i
i = i + 1
>>> for x in myrange(10):
... print(x)
... x = 1
...
0
1
2
3
4
5
6
7
8
9
x
中的值更改永远不会传播回range()
或xrange()
函数。