Seconde - Python - Boucles - Cours

Répétitions...

Connaissez-vous la suite de Fibonacci ?
C’est une suite de nombres, commençant par 0 et 1, et dont chaque terme est la somme des deux précédents :

$$ 0 ~~ 1 ~~ 1 ~~ 2 ~~ 3 ~~ 5 ~~ 8 ~~ 13 ~~ 21 ~~ 34 ~~ 55 ~~ 89 ~~ \ldots $$

Pour calculer les termes de cette suite, il faut effectuer des calculs répétitifs :

Répéter de tels calculs peut être long et fastidieux pour nous... mais pas pour notre ordinateur, à condition de lui expliquer comment faire.

Boucle conditionnelle

Une boucle conditionnelle consiste à répéter un bloc d’instructions tant qu’une condition est vraie.

Pour définir une boucle conditionnelle, on utilise le mot-clé while (tant que) :

while condition: # Instructions à exécuter

Comme pour les fonctions et les conditions, la ligne contenant le mot clé while se termine par :, et les instructions à répéter sont indentées vers la droite (décalées vers la droite).

Prenons un exemple. Essayons de faire compter Python de 1 à 10 avec le programme suivant :

print(1) print(2) print(3) print(4) print(5) print(6) print(7) print(8) print(9) print(10)

Ça marche, mais si on vous demande de modifier le code précédent pour que Python compte jusqu'à 100, vous conviendrez que c'est long et inutile et surtout répétitif. En programmation, qui dit répétition dit boucle. Dans le code précédent, toutes les instructions se ressemblent, et ne diffèrent que par le nombre affiché. On peut alors demander à Python << Affiche tous les nombres jusqu'à 10 >> de la manière suivante :

n = 1 while n <= 10: print(n) n = n + 1

Analysons ligne par ligne le code précédent :

n = 1 while n <= 10: print(n)

Et pour compter jusqu'à 100 ? Il suffit juste de modifier quelque chose... À vous de deviner !

n = 1 while n <= 10: print(n) n = n + 1

Python sait compter jusqu'à de grandes valeurs, mais pas votre navigateur, qui risque de planter... Vous voilà prévenus !

En guise d'entraînement, essayez de deviner ce qu'affichent les 2 programmes suivants :

# Programme 1 a = 0 while a <= 10: a = a + 2 print(a)
# Programme 2 a = 1 while a <= 20: a = a * 3 print(a)

Boucle itérative

Une boucle itérative consiste à répéter un bloc d’instructions un nombre de fois fixé à l'avance.

Pour répéter $n$ fois une série d'instructions avec une boucle itérative, on utilise le mot-clé for (pour) et la fonction range :

for i in range(n): # Instructions à répéter n fois

Par exemple, pour afficher 10 fois << Bonjour >>, on écrira :

for i in range(10): print("Bonjour")

Vous avez sans doute remarqué que l'on utilise une variable i dans la boucle. En réalité, l'instruction range(n) retourne la liste des nombres de $0$ à $n-1$. Ainsi, dans notre boucle, la variable i prendra toutes les valeurs comprises entre $0$ et $n-1$.

for i in range(10): print(i)

Une erreur classique est de croire que range(n) retourne la liste des nombres de $1$ à $n$. Mais en informatique, on compte à partir de $0$ et non à partir de $1$ !

La fonction range peut s'utiliser de plusieurs manières différentes :

Ainsi, pour afficher les nombres de 1 à 10, on utilisera le programme suivant :

for i in range(1,11): print(i)

Pour afficher tous les nombres pairs entre 10 et 30 (inclus), on fait la liste des nombres de 10 à 30 avec un pas de 2 :

for i in range(10,31,2): print(i)

Calculer une somme avec for

À quoi est égale la somme des entiers pairs de 10 à 30 ?

Facile ! Le programme précédent donne la liste de ces valeurs, il ne reste plus qu'à les ajouter :

print(10 + 12 + 14 + 16 + 18 + 20 + 22 + 24 + 26 + 28 + 30)

Bon, c'était facile...

À quoi est égale la somme des entiers pairs de 10 à 3000 ?

C'est plus difficile, et il est impensable d'écrire cette somme comme ci-dessus. Pour calculer une somme de façon itérative, on utilise la méthode suivante :

Hors de question cependant d'écrire un programme du genre :

somme = 0 somme = somme + 10 somme = somme + 12 ... somme = somme + 2998 somme = somme + 3000

On utilise plutôt une boucle itérative, parfaitement adaptée ici :

somme = 0 for i in range(10,3001,2): somme = somme + i print(somme)

L'instruction somme = somme + i est ainsi répétée pour i égal à 10, puis 12, puis 14, ... jusqu'à 3000.

Au final, notre somme est bien égale à 10 + 12 + 14 + ... + 3000.

Calculer un seuil avec while

Je dispose d'un capital de 100€, qui double tous les ans. Au bout de combien d'années aurais-je plus de 10 000€ ?

Ce calcul peut bien entendu se faire à la main :

Mais nous allons demander à Python de calculer ça. Comme on ne sait pas combien d'années il faut pour dépasser 10 000€ (c'est la question), on ne peut pas utiliser une boucle itérative. Il faut utiliser une boucle conditionnelle avec while :

capital = 100 annees = 0 while capital < 10000: capital = capital * 2 annees = annees + 1 print(annees) print(capital)

Analysons le programme précédent :

Au bout de 7 ans, notre capital a donc dépassé les 10 000€ pour atteindre 12 800€.

Au bout de combien d'années notre capital dépasse-t-il 100 000€ ?

Il suffit de modifier le programme précédent... Trouverez-vous la réponse ?

Dernière mise à jour : 04 Nov. 2022, 19:13:15