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

Après le passage correspondant à une valeur i, total contient la somme des entiers de 1 à i. Cette phrase décrit le rôle de l’accumulateur indépendamment de la syntaxe Python. 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