• 6 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 8/6/24

Choisissez la boucle adéquate

Imaginez que vous avez un bloc de code que vous voulez répéter plusieurs fois. Vous pouvez naturellement le stocker dans une fonction et appeler cette fonction autant de fois que nécessaire. Cela fonctionnerait, mais reviendrait un peu à chasser une mouche avec un bazooka : ça marche, mais ce n’est pas forcément la solution la plus optimale ;). D’autant plus que, généralement, on ne sait pas forcément à l’avance le nombre de fois que l’on va avoir besoin de répéter ledit bloc.

Les boucles permettent de résoudre cette problématique ! En programmation, une boucle est une structure qui permet de répéter une ou plusieurs instructions, sans avoir à les réécrire à chaque fois. Il existe deux types de boucles (for et while), que vous allez à présent expliciter.

“Bouclez” un nombre de fois fixé avec la boucle FOR

Les boucles for vont être utilisées lorsque l’on sait par avance le nombre de fois où une action va être répétée.

La boucle for sur une collection

L’utilisation classique des boucles en Python se fait en utilisant directement les différentes valeurs d’une collection. Voici un exemple avec une liste :

Parcours d'une liste via une boucle
Parcours d’une liste via une boucle

Le résultat affiché correspond à chaque élément de la liste pris un à un. Détaillez un peu ce qui a été réalisé dans le code ci-dessus :

  1. Vous avez créé une liste  myList  contenant 4 éléments : 7, 2, 4 et 10.

  2. La boucle va stocker la première valeur de la liste (ici 7) dans la variable  elt.

  3. Ensuite, l’ensemble du bloc de code associé à la boucle for (défini via l’indentation... encore !) est exécuté avec  elt  ayant la première valeur. Ici, ce bloc consiste juste à afficher  elt.

  4. Une fois cela fait,  elt  va prendre la seconde valeur de la liste (ici 2) et l’on réexécute le bloc de code.

  5. La boucle va continuer ainsi jusqu’à ce que l’ensemble des valeurs de votre liste aient été stockées dans la variable  elt  et que les instructions relatives à la boucle aient été exécutées pour chacune d’elles.

Voici un diagramme pour comprendre la logique de Python derrière la boucle :

Schéma représentant la logique de la boucle
Comprendre la logique de la boucle !

Vous pouvez également itérer via un string ! Rappelez-vous que l’on appelle les stringsdes "chaînes de caractères" en français, justement, car ils représentent une collection de caractères, de façon similaire à une liste.

monString = "Eléments"

for elt in monString:
    print(elt)

Dans ce cas,  elt  va prendre successivement chaque caractère de votre string.

La boucle for via une valeur itérative entière

Si l’on veut vraiment boucler via une valeur itérative entière en Python pour revenir à une boucle for plus classique en termes de programmation, on va en réalité devoir contourner le problème. Vous  allez itérer au travers d’une liste qui contiendra les différentes valeurs de votre entier itératif. Pour cela, vous utiliserez la fonction  range(début, fin, pas), qui va générer une liste de nombres selon trois paramètres :

  • début  : le premier nombre de la  séquence;

  • fin  : correspond au dernier nombre de la séquence non inclus. La fonction va générer des nombres de  début  à  fin- 1;

  • pas  : le pas entre chaque nombre généré.

Tous les paramètres ne sont pas nécessaires. Par exemple :

for i in range(0, 5, 1):
    print(i) # -> affiche de 0 à 4 par pas de 1 (fin - 1)
    
for i in range(0, 5):
    print(i) # -> affiche de 0 à 4 également (le pas par défaut est 1)
    
for i in range(5):
    print(i) # -> affiche de 0 à 4 également (le début par défaut est 0)

for i in range(0, 5, 2):
    print(i) # -> affiche 0, 2 puis 4

La boucle for est parfaitement adaptée lorsque vous avez à réaliser une action un certain nombre de fois connu à l’avance ou une action pour chaque élément d’une collection. Pour l’ensemble des autres cas, on peut réaliser une boucle conditionnelle : une boucle qui n’itère pas via une collection, mais selon une condition.

“Bouclez” selon une condition avec la boucle WHILE : 

La boucle conditionnelle est la boucle while en Python.

"While" en anglais signifie "tant que", et comme vous pouvez le deviner par le nom, la boucle va tourner tant qu’une condition est réalisée. C’est une sorte de combinaison entre une boucle for et une structure if. Le nombre de répétitions n’est pas défini à l’avance, mais via une condition à réaliser, comme avec un if. On appelle cela une boucle conditionnelle.

Voici comme se présente la syntaxe :

while expressionLogique:
    # bloc à exécuter

Elle peut être interprétée comme : tant que mon expression logique est vraie, exécute le bloc d’instruction.

Voilà comment cela fonctionne :

  1. Le programme vérifie que  expressionLogique  est égal à  True.

  2. Si c’est le cas, les instructions indentées à la suite des  :  sont exécutées. Une fois que cela est fait, on retourne à l’étape 1.

  3. Sinon, le programme sort de la boucle sans exécuter les instructions.

Essayez avec l’exemple ci-dessous :

nombreArbres = 0

while nombreArbres < 10:
    nombreArbres += 1
    print("J'ai planté", nombreArbres, "arbres")
    
print("J'ai une chouette forêt !")

Cela va produire le résultat suivant :

Plantons une forêt !
Plantez une forêt !

À chaque tour de boucle,  nombreArbres  est incrémenté de 1. Lorsque la variable atteint la valeur 10, l’expression  nombreArbre < 10  n’est plus vraie ! À ce moment, la boucle se termine et exécute le reste du programme à la suite. Dans ce cas précis, cela affiche : "J’ai une chouette forêt !"

Voici un exemple à ne surtout pas reproduire chez vous (celui-ci a été réalisé par un professionnel...) :

leSoleilBrille = True

while leSoleilBrille:
    print("Reste éveillé... pour toujours !") 
    # leSoleilBrille ne change jamais, donc la condition est toujours vraie 
    
# nous n'atteignons donc jamais cette ligne
print("Il est temps d'aller dormir !")

C’est une erreur courante et malheureusement très vite arrivée. Donc soyez vigilant !

Essayez par vous-même

Faites tourner vous même quelques boucles dans l'exercice suivant.

Vous trouverez la correction ici même.

Passez certaines instructions au sein de votre boucle

Peu importe le type de boucle, il y aura des situations où vous allez vouloir passer certaines itérations au sein de votre boucle, voire interrompre cette dernière prématurément.

Par exemple, vous voulez répéter quelque chose 10 fois, mais passer (au moins partiellement) lorsque la valeur est égale à 2 ou 5. En Python, pour passer une itération dans une boucle, vous utilisez le mot clé  continue  :

for i in range(10):
    # instructions réalisées à chaque itération
    print(i)
    if (i == 2) or (i == 5):
        print("Cas spécial")
        continue 
    # instructions non exécutées si i == 2 or 5 
    print("i != 2 & i != 5")

Vous pouvez aussi décider d’interrompre la boucle, lorsque par exemple on cherche un élément particulier dans une liste. Pour cela, vous utiliserez le mot clé break  :

panier = ["pomme", "orange", "banane"]

for fruit in panier:
    if fruit == "orange":
        print("J'ai une", fruit, "!")
        break

Une fois que le fruit a été trouvé dans votre panier, vous finissez la boucle.

En résumé

Dans ce chapitre, vous avez découvert 2 types de boucles :

  • celle pour répéter une action un certain nombre de fois fixé, ou selon une séquence : la boucle for ;

  • la boucle vous permettant de répéter une action tant qu’une condition est vraie : la boucle while.

  • Il y a une erreur courante à ne pas commettre avec la boucle while : la boucle infinie !

  • Vous pouvez choisir de passer certains tours de boucle via le mot clé continue.

  • Les cycles de la boucle peuvent être interrompus via la commande break.

Maintenant que vous avez vu comment organiser votre code via différentes structures, vous allez à présent ouvrir votre horizon avec la découverte des modules et des librairies !

Example of certificate of achievement
Example of certificate of achievement