2010-05-15 4 views
5

Sono un principiante con Python e sto provando alcuni programmi. Ho qualcosa come il seguente costrutto del ciclo WHILE in Python (non esatto).Nested WHILE loop in 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 

mi aspetto il ciclo esterno per scorrere 1,2,3 e 4. E so che posso fare questo con loop FOR come questo

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

Ma, ciò che è sbagliato con DURANTE ciclo continuo? Immagino che mi manchi qualcosa di ovvio, ma non riesco a capire.

Risposta: Il ciclo WHILE corretto ..

>>> 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: Cercato fuori così, trovato few questions ma nessuno più vicino a questo. Non so se questo potrebbe essere classificato come compito a casa, il programma attuale era diverso, il problema è quello che mi imbarazza.

risposta

7

Non stai reimpostando b a 0 proprio all'interno del tuo ciclo esterno, quindi b rimane al valore che aveva dopo il primo segmento del ciclo esterno - 4 - e il ciclo interno non si esegue mai più.

I cicli for funzionano correttamente perché sono do reimpostare correttamente le variabili di controllo del ciclo; con i loop while meno strutturati, tale ripristino è nelle tue mani e non lo stai facendo.