Tutoriel Python : les instructions de boucles

Table des matières

Introduction

  1. Boucle for

1.1. Boucle for et fonction range()

1.2. Boucle for et fonction len()

  1. Boucle while
  2. Do…while en Python
  3. Break
  4. Continue
  5. Else
  6. Transformation d’une boucle foren une boucle while
  7. Boucle imbriquée
  8. Exercices
  9. Correction des exercicies

Conclusion

Introduction

Les boucles sont des structures de contrôle de base. Tout comme les opérations, il est impératif de comprendre leur mode de fonctionnement et de savoir les manipuler.

Les boucles permettent de répéter plusieurs fois l’exécution d’un bloc d’instructions. On distingue deux types de boucles :

  • Boucle bornée :qui est utilisée lorsqu’on connaît le nombre de répétitions qui doit avoir lieu. Le mot-clé utilisé pour ce type de boucle est for qui signifie pour.
  • Boucle non bornée :qui est choisie lorsqu’on ne connaît pas au préalable le nombre de répétitions. Le mot-clé utilisé pour ce type de boucle est while qui signifie tant que.

Le fonctionnement d’une boucle est toujours le même. À vrai dire la syntaxe d’une boucle est exécuté en boucle tant que la condition posée est vérifiée.

1Boucle for

La boucle for permet de répéter une séquence, c’est-à-dire soit une chaîne de caractères (string), une liste (list), un ensemble (set), une collection ordonnée de n objets (tuple) ou un dictionnaire (dictionary).

Le for en Python fonctionne comme une méthode d’itération, pouvant exécuter un ensemble d’instructions pour chaque élément d’une séquence.

Syntaxe :

La boucle for est une instruction composée d’un en-tête qui se termine par deux points « : » et d’un bloc indenté constituant le corps de la boucle (instructions).

Exemple 1 :

  • Syntaxe :

a = [74,14,5]
for i in a :
    print(i)

  • Résultat de l’exécution :

Dans l’exemple ci-dessus on a parcouru les éléments de la variable a, qui est de type liste,et à chaque itération (c’est-à-dire exécution du corps de la boucle) on affiche l’élément i de la liste. Le terme compteur est souvent utilisé pour désigner la variable parce qu’elle numérote les itérations de la boucle.

Exemple 2 :

  • Syntaxe :

chaine = 'vélo'
for lettre in chaine:
    print(lettre)
print('fin')

  • Résultat de l’exécution :

Remarquons dans cet exemple la variable lettre est initialisée par le premier élément de la variable chaine « v ». Puis le bloc d’instructions est exécuté pour chaque élément de cette dernièrePour enfin exécuter la dernière ligne de code qui n’appartient pas au bloc d’instruction de la boucle for.

1.1. Boucle for et fonction range()

La fonction range() permet de créer une liste. Elle est très utile pour créer des séquences automatiques de nombres entiers.

Cette fonction prend 3 paramètres range(n, p, q):

  • n indique le numéro de départ de la liste.
  • p spécifie le dernier nombre de la liste (non inclus).
  • q indique l’incrément entre chaque nombre généré (le pas).

Exemple 3 :

  • Syntaxe :

for i in range(1,5,2):
print(i)

  • Résultat de l’exécution :

Dans cet exemple n = 1, p = 5, q = 2, on a créé une liste de 1 à 4 (quatre et non pas cinq, car la fonction range s’arrête à p-1) avec un pas de 2. Donc on parcourt avec le for cette liste qui contient les deux éléments 1 et 3.

Exemple 4 :

  • Syntaxe :

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

  • Résultat de l’exécution :

On n’a pas spécifié le pas pour cet exemple, alors par défaut c’est q = 1.

Exemple 5 :

  • Syntaxe :

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

  • Résultat de l’exécution :

Au niveau de cet exemple on n’a indiqué que la valeur du dernier nombre p = 5, alors par défaut la valeur de départ n est égale à zéro avec un pas de un.

Prenons les deux exemples suivants :

Exemple 6:

  • Syntaxe :

a=[0,1,2,3]
for i in a:
    print(i)

  • Résultat de l’exécution :

Exemple 7:

  • Syntaxe :

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

  • Résultat de l’exécution :

Les deux boucles ont servi à afficher le même résultat, car la fonction range() a permis de créer la séquence [0,1,2,3] sans avoir à donner la liste des valeurs à parcourir.

1.2. Boucle for et fonction len()

La fonction len() renvoie le nombre d’éléments dans un objet de type chaîne de caractères ou liste.

Exemple 8:

  • Syntaxe :

liste = ['arbre','maison','voiture','ordinateur']
print(len(liste))

  • Résultat de l’exécution :

On affiche le nombre d’éléments de l’objet liste.

Conjointement la fonction len() est utilisée avec la fonction range() afinde créer une boucle qui parcourt les éléments d’une liste.

Exemple 9 :

  • Syntaxe :

liste = ['arbre','maison','voiture','ordinateur']
for i in range(len(liste)):
    print(liste[i])

  • Résultat de l’exécution :

On parcourt les éléments de l’objet liste grâce à la fonction len() et on affiche chaque élément de celle-ci.

2. Boucle while

La boucle while permet de répéter un bloc d’instructions tant qu’une condition (expression booléenne) est vraie.

Syntaxe :

Comme pour la boucle for, le while est une instruction composée d’un en-tête qui se termine par deux points « : » et d’un bloc décalé d’un cran vers la droite constituant le corps de la boucle.

Exemple 10 :

  • Syntaxe :

a = 13
while a > 10:
    print(a)
    a-=1
print(a)

  • Résultat de l’exécution :

Dans cet exemple, les instructions de la boucle while sont exécutées tant que la variable a prend une valeur supérieure à 10, à chaque itération a décrémente, une fois a = 10 on sort de la boucle et on affiche la valeur de cette dernière.

3. Do…while en Python 

En python, et contrairement à nombreux langages, l’instruction do…while qui permet de créer une boucle qui doit s’exécuter au moins une fois sans savoir à l’avance le nombre de répétition n’existe pas. Toutefois ce fonctionnement peut être reproduit comme suit :

  • Syntaxe :

while True:
    i = int(input("Entrez un entier positif:"))
    print("vous avez fourni", i)
    if i>0:
        break
print("fin")

  • Résultat de l’exécution :

Dans cet exemple les instructions de la boucle while sont exécutées au moins une fois, parce que la condition de la boucle est toujours vraie. L’utilisateur est invité à insérer un entier positif ensuite si le i saisi est positif on sort de la boucle pour afficher fin. Sinon l’utilisateur est invité à faire entrer un autre entier jusqu’à ce que celui-ci soit positif.

4. Break

Le mot-clé break permet d’arrêter immédiatement une boucle.

Exemple 11:

  • Syntaxe :

for i in range(10):
    print(i)
    if i == 2:
        break

  • ·Résultat de l’exécution :

À chaque itération, on affiche la valeur de la variable i et on vérifie si la condition du if est valable. Quand i est égal à la valeur 2 on sort immédiatement de la boucle sans continuer les autres itérations.

Exemple 12:

Remarquons la différence du résultat du même exemple précèdent, sauf que cette fois-ci le print vient après le break.

  • Syntaxe :

for i in range(10):
    if i == 2:
        break

    print(i)

  • Résultat de l’exécution :

La valeur du compteur i est vérifiée avant son affichage. C’est pour cette raison qu’on sort de la boucle sans exécuter ce qui vient après dès que la condition du if est réalisée.

5. Continue

Le mot-clé continue permet d’arrêter l’itération actuelle et de passer à la suivante. Reprenons l’exemple précédent en remplaçant le break  par continue.

  • Syntaxe :

for i in range(10):
    if i == 2:
        continue
    print(i)

  • Résultat de l’exécution :

Chaque itération de cette boucle est exécutée sauf celle où le i est égal à 2. En effet la condition if est vérifiée à chaque itération, une fois i=2 l’itération est arrêtée et on passe à la suivante (i=3).

6. Else

L’instruction conditionnelle else permet d’exécuter une seule fois un bloc d’instructions lorsque la condition n’est plus vraie.

Exemple 13 :

Reprenons l’exemple précédent en ajoutant cette fois-ci le else qui s’exécutera une fois la variable a n’est plus grande que 10 (c’est-à-dire la condition du while est fausse).

  • Syntaxe :

a = 13
while a>10:
    print(a)
    a-=1
else:
    print("a n'est plus grand que 10")

  • Résultat de l’exécution :

Alors tant que a>10, on affiche sa valeur et elle décrémente de 1 jusqu’à ce que cette dernière soit égale à 10 pour que le else soit exécuté.

7. Transformation d’une boucle for en une boucle while

Les deux exemples ci-dessous sont équivalents :  

Exemple 14 :

  • Syntaxe :

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

  • Résultat de l’exécution :

Exemple 15 :

  • Syntaxe :

i = 1
while i
    print(i)
    i+=1

  • Résultat de l’exécution :

La boucle for itère la liste créée par la fonction range(), quant au deuxième exemple avec la boucle while, il y a une répétition du bloc d’instructions jusqu’à ce que la condition de la boucle ne soit plus vraie.

8. Boucle imbriquée

Une boucle imbriquée est tout simplement une boucle dans une autre boucle. Voici un exemple d’une boucle for imbriquée.

Exemple 15 :

  • Syntaxe :

liste_de_listes = [[4,5,6],[7,8,9],[10,11,12]]
for liste in liste_de_listes:
    for i in liste:
        print(i)

  • Résultat de l’exécution :

On a déclaré dans un premier temps une liste de listes, puis on a parcouru à travers la première boucle for ces listes puis par la deuxième boucle les éléments de chaque liste.

Exemple 16 :

Cet exemple représente une boucle while imbriquée.

  • Syntaxe :

i = 1
j = 2
while i
    while j
        print(i,'et', j)
        i+=1
        j+=1
    else:
        print('j est supèrieur à 4')
        break

  • Résultat de l’exécution :

Dans le premier while, si la condition est vraie on passe à la deuxième boucle, si la condition de cette dernière est vraie on affiche les deux variables i et j puis on incrémente de 1 leurs valeurs. On répète ceci jusqu’à ce que le j atteigne la valeur 4 (donc la condition de la deuxième boucle est fausse) puis  l’instruction du else est exécutée. Le break de sa part nous permet de sortir de la deuxième boucle pour ne pas avoir une boucle infinie.

9. Exercices

Exercice 1 :

Ecrire un programme qui affiche tous les entiers de 5 à n, en utilisant la boucle for et la boucle while.

Exercice 2 :

Ecrire un programme qui permet de calculer la valeur TTC d’un prix HT entré par l’utilisateur.

Exercice 3 :

Ecrire un programme pouvant afficher pair si le nombre entré par l’utilisateur est divisible par 2 et impair sinon.

Exercice 4 :

Ecrire un programme permettant de calculer la somme des entiers positifs ou nuls inférieurs à un entier n entré par l’utilisateur.

Exercice 5 :

Ecrire un programme qui affiche le plus petit entier n tel que 7+8+….+n dépasse 5578.

10. Correction des exercicies

Exercice 1 :

  • Syntaxe :

while True:
    i = int(input("Entrez un entier supérieur a 5:"))
    for j in range(5,i):
        j+=1
        print(j)
    if i>5:
        break

  • Résultat de l’exécution :

Exercice 2 :

  • Syntaxe :

while True:
    i = int(input("Entrez le prix HT:"))
    ttc = i + i*0.2
    print(ttc)
    if i>0:
        break

  • Résultat de l’exécution :

Exercice 3 :

  • ·Syntaxe :

while True:
    i = int(input("Entrez un nombre:"))
    if i%2 == 0:
        print('le nombre est pair')
    else:
        print('le nombre est impair')

    if i>0:
        break

  • Résultat de l’exécution :

Exercice 4 :

  • Syntaxe :

while True:
    a=0
    i = int(input("Entrez un entier:"))
    for j in range(0,i+1):
        a = a+j
    print(a)
    if i>0:
        break

  • Résultat de l’exécution :

Exercice 5 :

  • Syntaxe :

n = 0
somme = 0
while somme
    n+= 1
    somme += n
print(n)

  • Résultat de l’exécution :

Conclusion

Lors de ce tutoriel on a vu que la boucle for est utilisée quand le nombre d’itérations est déterminé au préalable, contrairement à la boucle while qui est utilisée quand le nombre d’itérations est inconnu. Ceci d’une part, d’autre part on a vu les deux outils de contrôle d’une boucle : break et continue. La première instruction arrête immédiatement une boucle et la seconde permet d’arrêter l’itération actuelle et de passer à la suivante. Ensuite, on a vu la structure conditionnelle else qui permet d’exécuter une seule fois un bloc d’instructions quand une condition est réalisée. Finalement, on a défini une boucle imbriquée qui n’est qu’une boucle dans une autre boucle.

Article publié le 20 Septembre 2020par Imane BENHMIDOU