2010-05-15 19 views
5

Ich bin ein Anfänger mit Python und versuche einige Programme. Ich habe etwas wie das folgende WHILE-Schleifenkonstrukt in Python (nicht exakt).Verschachtelte WHILE-Schleifen 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 

Ich erwarte die äußere Schleife eine Schleife durch 1,2,3 und 4. Und ich weiß, dass ich dies mit FOR-Schleife wie diese tun können

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

Aber, was mit WHILE ist falsch Schleife? Ich denke, ich vermisse etwas offensichtlich, aber konnte nicht erkennen.

Antwort: Die korrigierte While-Schleife ..

>>> 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 gesucht, fand few questions aber nicht so nah an diese. Ich weiß nicht, ob dies als Hausaufgabe eingestuft werden könnte, das eigentliche Programm war anders, das Problem ist, was mich verwirrt.

Antwort

7

Sie setzen b nicht auf 0 innerhalb Ihrer äußeren Schleife zurück, so dass b auf dem Wert bleibt, den es nach dem ersten Bein der äußeren Schleife hatte - 4 - und die innere Schleife wird nie wieder ausgeführt.

Die for Loops funktionieren gut, weil sie do ihre Loop-Control-Variablen korrekt zurücksetzen; Mit den weniger strukturierten while Loops ist ein solches Zurücksetzen in Ihren Händen und Sie tun es nicht.

Verwandte Themen