1ère NSI - Notions de base - Boucles - Cours

Les boucles sont un concept fondamental en programmation. Elles permettent de répéter certaines opérations autant de fois que nécessaire. Comment faire par exemple pour :

Avec des boucles bien sûr !

La boucle conditionnelle while

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 :

On peut schématiser le programme précédent de la façon suivante :

Attention aux boucles infinies !

Sans la dernière instruction n = n + 1, notre programme ne se termine jamais, car si la valeur de n ne change pas, alors la condition n <= 10 est toujours vraie. On aurait alors une boucle infinie. Essayez pour voir :

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)

Parcourir une chaîne de caractères avec for

Comment faire pour compter le nombre de voyelles dans une chaîne de caractères avec Python ?

Nous connaissons déjà la fonction len, qui permet de compter le nombre de lettres dans une chaîne de caractères. Pour compter le nombre de voyelles, il faudrait regarder lettre par lettre et vérifier si c’est une voyelle ou une consonne.

Grâce à l’instruction for, il est possible de parcourir une chaîne de caractères lettre par lettre, de la façon suivante :

for lettre in chaine: # Instructions à faire pour chaque lettre

Par exemple, pour afficher toutes les lettres du mot Bonjour :

for lettre in "Bonjour": print(lettre)

Dans le programme précédent, la fonction print n’est pas appelée une fois mais 7 fois (autant de fois que la chaîne contient de lettres). D’où les 7 affichages successifs.

Plutôt que d’afficher cette lettre (ce qui ne sert pas à grand chose), nous allons tester si c’est une voyelle. À quelle condition notre lettre est une voyelle ? Si c’est une des lettres suivantes :

a e i o u y A E I O U Y

Rappelez-vous : Python est sensible à la casse, c'est à dire qu'il fait la différence entre majuscules et minuscules.

Ça ne fait pas beaucoup de conditions à tester ? Si lettre == "a", puis lettre == "e"...

C’est vrai, mais nous connaissons le mot clé in.

Ainsi, lettre sera une voyelle si le booléen lettre in "aeiouyAEIOUY" est vrai. Il suffisait d’y penser !

for lettre in "Bonjour": if lettre in "aeiouyAEIOUY": print("Voyelle !") else: print("Consonne...")

C'est bien joli mais... on voulait compter le nombre de voyelles, non ?

En effet. Et quoi de mieux qu’une variable pour compter le nombre de voyelles ?

nbVoyelles = 0 # On initialise le nombre de voyelles à 0 for lettre in "Bonjour": # Pour chaque lettre du mot Bonjour if lettre in "aeiouyAEIOUY": # Si c’est une voyelle... nbVoyelles += 1 # On incrémente le nombre de voyelles print(nbVoyelles) # On affiche le nombre de voyelles !

On peut alors écrire une fonction nombreVoyelles(chaine) dont le rôle est de retourner le nombre de voyelles d'une chaîne de caractères donnée :

def nombreVoyelles(chaine): n = 0 for lettre in chaine: if lettre in "aeiouyAEIOUY": n += 1 return n

Répéter une action avec for et range

Le mot-clé for permet également de répéter une action un nombre de fois défini, à condition de l'associer à la fonction range. Pour répéter $n$ fois une série d'instructions de cette façon, on utilise la syntaxe suivante :

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")

L'instruction for utilisée de cette manière permet de créer une boucle itérative. Contrairement à la boucle conditionnelle while vue auparavant, le nombre de répétitions est ici défini à l'avance.

Vous avez sans doute remarqué que l'on utilise une variable i dans la boucle. En réalité, l'instruction range(n) retourne (en quelque sorte) une liste des nombres de $0$ à $n-1$. Ainsi, dans notre boucle, la variable i prendra toutes les valeurs comprises entre $0$ et $n-1$, de la même manière que notre variable lettre prenait comme valeurs les lettres successives d'une chaîne avec l'instruction for lettre in chaine.

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)

Les mots-clés break et continue

L'instruction break permet de stopper l'exécution d'une boucle for ou while.

# Exemple avec break for i in range(10): if i == 4: break print(i)

L'instruction continue permet de "sauter" un tour de boucle, de passer à l'itération suivante sans exécuter les instructions qui suivent.

# Exemple avec continue for i in range(10): if i == 4: continue print(i)
Dernière mise à jour : 07 Oct. 2023, 23:36:44