"break" ne s'arrête pas
Résolu
JML
-
JML -
JML -
Bonjour,
Je suis un nouveau apprenant de python..
J'ai tapé le code suivant pour obtenir
Mais le terminal m'a affiché une série de
... où il m'a affiché une série ininterrompue de
Quel est le problème?
Merci par avance.
Je suis un nouveau apprenant de python..
J'ai tapé le code suivant pour obtenir
1 2 3 4 5:
i = 1
while i < 7:
print(i)
if i == 5:
break
i += 1
Mais le terminal m'a affiché une série de
1et ne voulait pas s'arrêter (
1 1 1....). Et c'est la même chose pour le code suivant :
i = 1 while i < 7: print(i) i = i+2
... où il m'a affiché une série ininterrompue de
2au lieu de
2 4 6. Le mot clé
breakne fonctionne pas et je suis obligé de fermer le programme à chaque fois pour l'arrêter.
Quel est le problème?
Merci par avance.
3 réponses
-
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
pour ton premier code, je suspecte que la boucle while ne contient que le print()
pour ton second code, je pense que tu ne nous as pas montré le code qui produit ces "2". je ne vois pas par quel miracle le code que tu montres pourrait assigner 2 à i. -
Bonjour,
J'ai corrigé ton message #1 car sans l'indentation, on ne peut pas comprendre d'où vient le problème (comme l'a souligné Whismeril dans son message #2). Je t'invite donc dans tes futurs messages à tenir compte de cette remarque.
Dans le premier bout de code
L'incrémentation de (i += 1
) n'est pas exécuté car en dehors de la bouclewhile
comme en témoigne l'indentation. Du coup le testif i == 5
n'est jamais vérifié et lebreak
n'est jamais exécuté.
Une fois l'indentation corrigée, le code se comporte comme tu le souhaites :
i = 1 while i < 7: print(i) if i == 5: break i += 1
Ce programme s'écrit plus naturellement :
for i in range(1, 6): print(i)
Dans le second bout de code
Je n'obtiens pas le même résultat que toi, chez moi il écrit1 3 5
ce qui est le comportement normal vu ce que tu as écrit. Vu ton objectif, il faudrait initialiseri
à2
. Note que plutôt que d'écrirei = i + 2
tu peux directement écrirei += 2
:
i = 2 while i < 7: print(i) i += 2
Ce programme s'écrit plus naturellement :
for i in range(2, 7, 2): print(i)
Bonne chance