"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

  1. 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.
    0
    1. JML
       
      Merci infiniment.. Je vais revoir ça.. ce ne sont que mes débuts..
      0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
    1. JML
       
      Merci beaucoup... Je vous en suis reconnaissant..
      0