2010-05-15 176 views
5

我是一个初学者,使用Python并尝试几个程序。我有一些像Python中的以下WHILE循环结构(不是确切的)。在Python中嵌套的WHILE循环

IDLE 2.6.4  
>>> a=0 
>>> b=0 
>>> while a < 4: 
     a=a+1 
     while b < 4: 
     b=b+1 
     print a, b 


1 1 
1 2 
1 3 
1 4 

我期待外循环来遍历1,2,3和4。我知道我能做到这一点FOR循环这样

>>> for a in range(1,5): 
     for b in range(1,5): 
      print a,b 


1 1 
1 2 
.. .. 
.. .. // Other lines omitted for brevity 
4 4 

但是,什么是错的WHILE循环?我想我错过了一些显而易见的东西,但无法辨认出来。

答: 校正WHILE循环..

>>> a=0 
>>> b=0 
>>> while a < 4: 
    a=a+1 
    b=0 
    while b<4: 
     b=b+1 
     print a,b 


1 1 
.. .. 
.. .. // Other lines omitted for brevity 
4 4 

P.S:搜索出SO,找到few questions但没有接近这一点。不知道这是否可以归类为家庭作业,实际的程序是不同的,问题在于我困惑。

回答

7

你不会将外部循环中的b重置为0,因此b停留在外循环的第一段之后的值 - 4 - 并且内循环不再执行。

for循环正常工作,因为他们正确地重置其循环控制变量;结构较差的while循环,这种重置是在你的手中,而你没有这样做。