Question

Je suis un débutant avec Python et essayer quelques programmes. J'ai quelque chose comme la construction de la boucle en suivant en Python (pas exact).

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

J'attends la boucle extérieure en boucle par 1,2,3 et 4. Et je sais que je peux le faire avec boucle FOR comme ceci

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

Mais, qu'est-ce qui ne va pas avec la boucle while? Je suppose que je manque quelque chose évidente, mais ne pouvait pas faire sortir.

Réponse: La boucle while corrigé ..

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

PS : Vous avez cherché sur SO, trouvé quelques questions mais aucun aussi proche de cela. Je ne sais pas si cela pourrait classer comme devoir, le programme réel était différent, le problème est ce qui me déconcerte.

Était-ce utile?

La solution

Vous n'êtes pas remise à zéro b à 0 à l'intérieur de votre boucle extérieure, de sorte que les séjours de b à la valeur qu'il avait, après la première étape de la boucle extérieure - 4 -. Et la boucle intérieure exécute jamais

Les for boucles fonctionnent bien parce qu'ils faire réinitialiser correctement leurs variables de contrôle en boucle; avec les boucles de while moins structurées, comme la remise à zéro est entre vos mains, et vous ne le faites pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top