2010-05-15 15 views
5

Jestem początkującym użytkownikiem Pythona i próbuję kilku programów. Mam coś podobnego do następującej konstrukcji pętli WHILE w Pythonie (nie dokładnie).Zagnieżdżone pętle WHILE w języku Python

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 

Oczekuję zewnętrznej pętli do pętli 1,2,3 i 4. I wiem, że mogę to zrobić z pętli FOR jak ten

>>> 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 

Ale, co jest nie tak z WHILE pętla? Chyba brakuje mi czegoś oczywistego, ale nie mogłem zrozumieć.

Odpowiedź: Skorygowany pętli 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: Szukano na zewnątrz tak, uznał few questions ale nikt tak blisko do tego. Nie wiem, czy można to sklasyfikować jako zadanie domowe, faktyczny program był inny, problem jest tym, co mnie zastanawia.

Odpowiedz

7

Nie resetujesz b na 0 wewnątrz zewnętrznej pętli, więc b pozostaje na wartości, jaką miał po pierwszym odgałęzieniu zewnętrznej pętli - 4 - i wewnętrzna pętla nigdy nie zostanie ponownie wykonana.

Pętle for działają poprawnie, ponieważ do resetują poprawnie swoje zmienne sterujące pętlą; z mniej uporządkowanymi pętlami while, takie resetowanie jest w twoich rękach, a ty tego nie robisz.