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.
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.
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.
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).
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.
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.
total
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.
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.
Ă chaque passage, i augmente. La condition i < 5 finit donc par devenir fausse.
Choisir la bonne boucle#
Les deux programmes suivants produisent le mĂȘme affichage.
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#
Avec 5 à la place de 10, quel sera le dernier nombre affiché ?
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.
La derniĂšre valeur affichĂ©e peut dĂ©passer 20 : la condition est testĂ©e avant lâaddition suivante.
Applications mathématiques#
Ă 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.
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.
Exercice 2
Calculer et afficher la somme des entiers de 1 Ă 100.
Exercice 3
Afficher les nombres pairs entre 0 et 20.
Exercice 4
Afficher les nombres de 0 Ă 10 avec une boucle while.
Exercice 5
Partir de x = 1 et doubler x tant que x < 50. Afficher les valeurs obtenues.
Dans le parcours