Boucles#

Une boucle Ă©vite de recopier plusieurs fois la mĂȘme instruction. Python peut ainsi effectuer rapidement un grand nombre de calculs, Ă  condition de lui indiquer clairement ce qui doit se rĂ©pĂ©ter.

DĂšs la seconde

Répéter un nombre connu de fois#

Au lieu d’écrire cinq fois print("Bonjour"), on peut Ă©crire :

La fonction range(5) fournit ici les cinq entiers 0, 1, 2, 3 et 4. Sa syntaxe sera détaillée juste aprÚs ce premier essai.

Exemple
Répéter une instruction
PrĂȘt
Sortie

  

La ligne indentĂ©e est exĂ©cutĂ©e cinq fois. La variable i prend successivement les valeurs 0, 1, 2, 3 et 4, mĂȘme si elle n’est pas affichĂ©e ici.

Exemple
Observer le compteur
PrĂȘt
Sortie

  

Avant toute modification, il faut pouvoir expliquer pourquoi le premier numéro affiché est 0 et le dernier 4.

Choisir les valeurs parcourues#

range(a, b) permet de parcourir les entiers de a jusqu’à b-1. La borne de droite n’est pas atteinte.

Exemple
Choisir les bornes
PrĂȘt
Sortie

  

Avec d’autres bornes, le mĂȘme principe demeure. Pour afficher les entiers de 4 Ă  9, quelle valeur faut-il placer comme seconde borne ?

Lorsque le numĂ©ro du passage n’est pas utilisĂ©, on Ă©crit souvent _ Ă  la place de i : for _ in range(5):. Le symbole _ reste un nom de variable ordinaire ; il indique simplement au lecteur que sa valeur n’a pas d’utilitĂ© dans la boucle.

On peut aussi préciser un pas avec range(a, b, h).

Exemple
Choisir un pas
PrĂȘt
Sortie

  

Le programme affiche les nombres pairs de 0 Ă  8. Remplace le pas par 3, puis essaie un pas nĂ©gatif avec range(10, 0, -2). Si le pas est nĂ©gatif, les bornes doivent ĂȘtre placĂ©es dans l’ordre dĂ©croissant.

Pour retrouver les diffĂ©rentes Ă©critures possibles, help(range) affiche directement l’aide intĂ©grĂ©e de Python sur range.

Une borne Ă  corriger#

Le programme suivant devrait afficher les entiers de 1 Ă  5. Il s’exĂ©cute sans message d’erreur, mais le rĂ©sultat n’est pas celui qui Ă©tait attendu.

À corriger
Retrouver la valeur manquante
Erreur attendue
Sortie

  
Comment chercher ?

Il s’agit d’une erreur de logique : Python exĂ©cute exactement ce qui est Ă©crit. Comparer la derniĂšre valeur affichĂ©e avec la derniĂšre valeur attendue, puis se rappeler que la borne de droite de range est exclue.

Accumuler un résultat#

Une boucle peut construire un rĂ©sultat Ă©tape aprĂšs Ă©tape. Ici, total joue le rĂŽle d’accumulateur.

Exemple
Somme des entiers de 1 Ă  5
PrĂȘt
Sortie

  
Valeurs successives de total
départ0
→ +1
aprĂšs i = 11
→ +2 → +3 → +4 → +5
fin15

En remplaçant 6 par 101, le mĂȘme programme calcule la somme des entiers de 1 Ă  100.

Un accumulateur peut aussi construire un produit. Il commence alors à 1, car multiplier par 0 annulerait immédiatement tout le résultat.

Exemple
Produit des entiers de 1 Ă  5
PrĂȘt
Sortie

  

La valeur obtenue est \(1\times2\times3\times4\times5=120\). Cette construction sera retrouvée plus loin sous le nom de factorielle.

Répéter selon une condition#

Une boucle while répÚte un bloc tant que sa condition est vraie.

Exemple
PremiĂšre boucle while
PrĂȘt
Sortie

  

À chaque passage, i augmente. La condition i < 5 finit donc par devenir fausse.

Tester la condition
vraie
Exécuter le bloc
Faire évoluer la variable
↩ nouveau test
fausse : sortir de la boucle

Choisir la bonne boucle#

Les deux programmes suivants produisent le mĂȘme affichage.

Exemple
Deux Ă©critures pour le mĂȘme rĂ©sultat
PrĂȘt
Sortie

  

On prĂ©fĂšre gĂ©nĂ©ralement for lorsque le nombre de rĂ©pĂ©titions est connu. while est adaptĂ© lorsqu’on attend qu’une condition devienne vraie ou fausse.

Attention aux boucles infinies#

Si on oublie i = i + 1 dans l’exemple prĂ©cĂ©dent, i reste Ă©gal Ă  0 et la condition demeure toujours vraie. Le programme ne s’arrĂȘte plus : c’est une boucle infinie.

Le bouton « ArrĂȘter » permet d’interrompre un essai qui tourne trop longtemps, mais il faut tout de mĂȘme apprendre Ă  vĂ©rifier que la variable de contrĂŽle Ă©volue dans le bon sens.

Quelques boucles conditionnelles#

Exemple
Compter jusqu’à 10
PrĂȘt
Sortie

  

Avec 5 à la place de 10, quel sera le dernier nombre affiché ?

Exemple
Doubler jusqu’à dĂ©passer 100
PrĂȘt
Sortie

  

Quelle est la premiÚre valeur qui dépasse 100 ? Observe aussi la différence entre les valeurs affichées dans la boucle et la valeur finale.

Exemple
Additionner tant que
PrĂȘt
Sortie

  

La derniĂšre valeur affichĂ©e peut dĂ©passer 20 : la condition est testĂ©e avant l’addition suivante.

Applications mathématiques#

Exemple
Table de 7
PrĂȘt
Sortie

  

À tester : remplacer 7 par 9, puis adapter le programme pour afficher seulement les produits de 1 à 10.

Une boucle permet Ă©galement d’afficher plusieurs termes d’une suite dĂ©finie par une formule.

Exemple
Termes d’une suite
PrĂȘt
Sortie

  

str(n) transforme temporairement le nombre n en texte afin de l’insĂ©rer dans le message affichĂ©. La valeur de n elle-mĂȘme reste un entier.

Quels sont les six rangs parcourus ? Modifie la formule sans changer la boucle.

Exercices#

Exercice 1

Afficher les nombres de 1 Ă  10 avec une boucle for.

À toi
Entiers de 1 Ă  10
À faire
Sortie

  

Exercice 2

Calculer et afficher la somme des entiers de 1 Ă  100.

À toi
Somme de 1 Ă  100
À faire
Sortie

  

Exercice 3

Afficher les nombres pairs entre 0 et 20.

À toi
Nombres pairs
À faire
Sortie

  

Exercice 4

Afficher les nombres de 0 Ă  10 avec une boucle while.

À toi
Compter avec while
À faire
Sortie

  

Exercice 5

Partir de x = 1 et doubler x tant que x < 50. Afficher les valeurs obtenues.

À toi
Doubler une valeur
À faire
Sortie

  

Dans le parcours