"break" ne s'arrête pas

Résolu/Fermé
JML - Modifié le 8 avril 2022 à 18:18
 JML - 9 avril 2022 à 16:42
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

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
5 avril 2022 à 08:44
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
Merci beaucoup..
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 5 avril 2022 à 09:07
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
Merci infiniment.. Je vais revoir ça.. ce ne sont que mes débuts..
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 8 avril 2022 à 18:27
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
Merci beaucoup... Je vous en suis reconnaissant..
0