"break" ne s'arrête pas

Résolu
JML -  
 JML -
Bonjour,

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
1
et 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
2
au lieu de
2 4 6
. Le mot clé
break
ne 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

Utilisateur anonyme
 
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.
0
JML
 
Merci beaucoup..
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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.
0
JML
 
Merci infiniment.. Je vais revoir ça.. ce ne sont que mes débuts..
0
mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
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 boucle
while
comme en témoigne l'indentation. Du coup le test
if i == 5
n'est jamais vérifié et le
break
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 écrit
1 3 5
ce qui est le comportement normal vu ce que tu as écrit. Vu ton objectif, il faudrait initialiser
i
à
2
. Note que plutôt que d'écrire
i = i + 2
tu peux directement écrire
i += 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
0
JML
 
Merci beaucoup... Je vous en suis reconnaissant..
0