Accéder au contenu principal

Tutoriel sur les boucles Python

Tutoriel complet d'introduction aux boucles Python. Apprenez et pratiquez les boucles while et for, les boucles imbriquées, les mots-clés break et continue, la fonction range et bien plus encore.
Actualisé 8 sept. 2025  · 15 min de lecture

gamme Python

Les boucles sont importantes en Python ou dans tout autre langage de programmation, car elles permettent d'exécuter un bloc de code de manière répétée. Vous serez fréquemment confronté à des situations où vous devrez utiliser un morceau de code à plusieurs reprises, mais vous ne souhaitez pas écrire la même ligne de code à plusieurs reprises.

Dans ce tutoriel sur les boucles Python, vous aborderez les thèmes suivants :

  • La boucle while en Python : vous apprendrez à construire et à utiliser une boucle while dans des applications de science des données. Vous y parviendrez en relevant plusieurs défis de codage interactifs.
  • Ensuite, vous passerez à la boucle « for » : une fois encore, vous apprendrez comment construire et utiliser une boucle « for » dans un contexte réel.
  • Vous apprendrez également la différence entre l'utilisation d'une boucle while et d'une boucle for.
  • Également le sujet des boucles imbriquées
  • Ensuite, vous découvrirez comment utiliser les mots-clésbreak et continue .
  • Différence entre les fonctions xrange() et range()

Pendant que Loop

La boucle while est l'une des premières boucles que vous rencontrerez probablement lorsque vous commencerez à apprendre à programmer. C'est sans doute aussi l'une des plus intuitives à comprendre : si vous réfléchissez au nom de cette boucle, vous comprendrez rapidement que le mot « while » a un rapport avec « interval » (intervalle) ou « period of time » (période de temps). Comme vous le savez déjà, le terme « boucle » désigne un morceau de code que vous exécutez de manière répétée.

En tenant compte de tout cela, vous pouvez facilement comprendre la définition suivante de la boucle while :

Une boucle « while » est un concept de programmation qui, lorsqu'il est implémenté, exécute un morceau de code de manière répétée tant qu'une condition donnée reste vraie.

La définition ci-dessus met également en évidence les trois composants nécessaires pour construire une boucle while en Python :

  • Le mot-clé while ;
  • Une condition qui se traduit soit par True, soit par False; Et
  • Un bloc de code que vous souhaitez exécuter de manière répétée

C'est tout ce qu'il faut.

Comment créer une boucle while en Python

Maintenant que vous savez ce dont vous avez besoin pour construire une boucle while, il ne vous reste plus qu'à examiner un exemple concret où la boucle while est utilisée avant de commencer à faire des exercices par vous-même. Veuillez considérer l'exemple suivant :

# Take user input
number = 2  

# Condition of the while loop
while number < 5 :  
    print("Thank you")
    # Increment the value of the variable "number by 1"
    number = number+1

# Thank you
# Thank you
# Thank you

L'exemple de code ci-dessus est une boucle while très simple : si vous y réfléchissez, les trois composants dont vous avez pris connaissance précédemment sont tous présents : le mot-clé while, suivi d'une condition qui se traduit soit par True, soit par False (number < 5), et un bloc de code que vous souhaitez exécuter de manière répétée :

print("Thank you")
number = number + 1

Si vous examinez en détail le code ci-dessus, vous constaterez qu'il existe une variable number dans laquelle vous stockez un entier 2. Étant donné que la valeur dans number est inférieure à 5, vous affichez "Thank you" et augmentez la valeur de number d'une unité. Tant que la valeur dans number reste inférieure à 5, vous continuez à exécuter les deux lignes de code contenues dans la boucle while :

"Thank you"
"Thank you"

Vous affichez « Merci » deux fois supplémentaires avant que la valeur de number soit égale à 5 et que la condition ne soit plus évaluée à True. Étant donné que la condition évalue désormais à False, vous quitterez la boucle while et continuerez votre programme s'il contient d'autres instructions. Dans ce cas, il n'y a plus de code, donc votre programme s'arrêtera.

L'exemple ci-dessus est assez basique, vous pouvez également inclure des conditions, ou, en d'autres termes, une condition if, pour le personnaliser davantage. Veuillez examiner l'exemple suivant :

# Take user input
number = 2 

# Condition of the while loop
while number < 5 :  
    # Find the mod of 2
    if number%2 == 0:  
        print("The number "+str(number)+" is even")
    else:
        print("The number "+str(number)+" is odd")

    # Increment `number` by 1
    number = number+1

# The number 2 is even
# The number 3 is odd
# The number 4 is even

Maintenant, mettons cela en pratique.

Écrivez une fonction collatz() qui permet à l'utilisateur de saisir un entier dans une variable nommée number. Si le nombre est pair, il devrait afficher le résultat de l'opération number/2. Si le nombre est impair, alors collatz() devrait afficher et renvoyer 3 * number + 1. Le programme doit continuer à appeler la fonction collatz() sur l'number jusqu'à ce qu'elle renvoie un 1.

Veuillez noter qu'il s'agit en réalité d'une implémentation de la séquence de Collatz, qui est, en résumé, un problème mathématique dans lequel vous choisissez un nombre et effectuez les calculs ci-dessus jusqu'à obtenir le résultat 1.

Ci-dessous, vous trouverez la solution :

def collatz(number):
    # Is the mod of 2 equal to 0?
    if number % 2 == 0:
        print(number // 2)
        return number // 2

    # If the mod of 2 isn't equal to 0, print `3 * number + 1`
    elif number % 2 == 1:
        result = 3 * number + 1
        print(result)
        return result

# Input   
n = 5

# As long as `n` is not equal to `1`, run `collatz()`
while n != 1:
    n = collatz(int(n))

# 16
# 8
# 4
# 2
# 1

Commencez à apprendre Python gratuitement

Introduction to Python

BeginnerSkill Level
4 h
6.4M learners
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
See DetailsRight Arrow

Boucle « for »

Vous pouvez aborder la boucle for de la même manière que la boucle while. Comme vous vous en doutez probablement, le composant « for » dans « for loop » fait référence à une action que vous effectuez un certain nombre de fois.

En gardant à l'esprit tous les éléments ci-dessus, vous pouvez facilement définir la boucle « for » comme suit :

Une boucle « for » est un concept de programmation qui, lorsqu'il est implémenté, exécute un morceau de code à plusieurs reprises « for » un certain nombre de fois, en fonction d'une séquence.

Contrairement à la boucle while, aucune condition n'est activement impliquée : vous exécutez simplement un morceau de code plusieurs fois de suite. En d'autres termes, alors que la boucle while continue d'exécuter le bloc de code qu'elle contient uniquement tant que la condition est True, la boucle for n'exécute le code qu'elle contient qu'un nombre spécifique de fois. Ce « nombre de fois » est déterminé par une séquence ou une liste ordonnée d'éléments.

Vous en apprendrez davantage sur la différence entre les boucles while et for dans un instant, mais pour l'instant, concentrez-vous sur les éléments suivants dont vous avez besoin pour créer une boucle for :

  • Le mot-clé for
  • Une variable
  • Le mot-clé in
  • La fonction range(), qui est une fonction intégrée à la bibliothèque Python permettant de créer une séquence de nombres.
  • Le code que vous souhaitez exécuter de manière répétée

Boucles « for » en Python

# Print "Thank you" 5 times
for number in range(5):
    print("Thank you")

# Thank you
# Thank you
# Thank you
# Thank you
# Thank you

Comme vous pouvez le constater, les composants présentés dans la section précédente sont repris dans ce petit exemple de boucle « for » en Python : le mot-clé for, la variable number, le mot-clé in, la fonction range() et le code que vous souhaitez exécuter plusieurs fois, print("Thank you").

Ce n'est pas si difficile, n'est-ce pas ?

Examinons un autre exemple de boucle « for », dans lequel vous utilisez deux variables pour définir votre flux de contrôle :

languages = ['R', 'Python',  'Scala', 'Java', 'Julia']

for index in range(len(languages)):
   print('Current language:', languages[index])

# Current language: R
# Current language: Python
# Current language: Scala
# Current language: Java
# Current language: Julia

Comme vous pouvez le constater, la boucle débute par le mot-clé for. Ensuite, vous utilisez les variables index et languages, le mot-clé in et la fonction range() pour créer une séquence de nombres. De plus, vous pouvez constater que vous utilisez également la fonction len() dans ce cas, car la liste languages n'est pas numérique. Le morceau de code que vous souhaitez exécuter de manière répétée est une instruction d'impression, à savoir : print('Current language :', languages[index]).

Dans la boucle ci-dessus, vous souhaitez exprimer que pour chaque index compris dans la plage len(languages), vous souhaitez afficher le langage de programmation en science des données. Maintenant, len(languages) est égal à 5, donc l'énoncé pourrait également être réécrit comme suit :

for index in range(5):
    print('Current language:', languages[index])

# Current language: R
# Current language: Python
# Current language: Scala
# Current language: Java
# Current language: Julia

Et cela vous donne à nouveau le même résultat !

Boucles « while » et « for » en Python

Revenons à l'exemple initial de boucle while afin de déterminer précisément les différences entre les boucles while et for. Vous avez déjà lu ci-dessus que la différence réside dans la condition qui est ou n'est pas impliquée, mais comment cela se reflète-t-il dans le code et comment pouvez-vous éventuellement passer de l'une à l'autre ?

# Take user input
number = 2  

while number < 5 :
    print("Thank you")
    # Increment `number` by 1
    number = number+1

# Thank you
# Thank you
# Thank you

Vous pouvez utiliser une boucle « for » pour afficher le message « Merci » de manière plus contrôlée :

# Print "Thank you" 3 times
for number in range(3) :  
    print("Thank you")

# Thank you
# Thank you
# Thank you

Avez-vous remarqué à quel point il était simple de convertir la boucle « while » en une boucle « for » équivalente ?

Comment cela fonctionne-t-il, demandez-vous ? C'est très simple.

Dans une boucle for, l'entier mentionné dans la fonction range correspond à la plage ou au nombre de fois que le contrôle doit boucler et exécuter le code dans la clause de la boucle for.

Veuillez noter que la fonction d'range() commence à compter à partir de 0 et non à partir de 1. Cela signifie que, dans l'exemple ci-dessus, le décompte devrait être 0,1,2 et non 1,2,3. C'est ainsi que fonctionne le comptage des nombres dans la mémoire d'un ordinateur. Par conséquent, lorsque vous concevez une boucle « for », veuillez toujours garder à l'esprit que vous devez considérer le nombre de la plage à partir de 0 et non à partir de 1.

Remarque: cela s'applique également aux listes en Python, par exemple. Si vous souhaitez en savoir plus sur les listes Python, nous vous recommandons de consulter le tutoriel de DataCamp intitulé « Les 18 questions les plus courantes sur les listes Python ».

Il existe une autre différence notable entre une boucle « for » et une boucle « while ». Une boucle « for » est plus rapide qu'une boucle « while ». Pour mieux comprendre, veuillez examiner l'exemple ci-dessous.

import timeit

# A for loop example
def for_loop():
    for number in range(10000) :  
        # Execute the below code 10000 times
        sum = 3+4
        #print(sum)

timeit.timeit(for_loop)

# 267.0804728891719
import timeit

# A while loop example
def while_loop():
    i =0
    while i<10000:
        sum = 3+4
        #print(sum)
        i+=1

timeit.timeit(while_loop)

# 884.9233417965908

Dans le bloc de code ci-dessus, vous avez deux boucles avec environ 10 000 itérations. À première vue, les deux semblent identiques, jusqu'à ce que l'on examine les coulisses et que l'on comprenne comment ces deux boucles fonctionnent. Remarque : la fonction timeit() vous fournit un indice sur ce qui pourrait constituer la différence.

Veuillez noter que tout le code Python est compilé à l'aide d'un compilateur C, ce qui signifie que le code présenté ci-dessus est d'abord décomposé en codes octets, puis traité par le compilateur C sous-jacent.

Lorsque l'exécution de la boucle for dans l'exemple ci-dessus commence, l'interpréteur Python communique avec le compilateur C sous-jacent, puis crée un objet liste de taille 10 000. Ensuite, il fait appel à un itérateur pour examiner l'index de chacun des 10 000 éléments de la liste.

L'exécution de la boucle while, en revanche, ne crée aucun objet liste. En réalité, le compilateur C sous-jacent appelle 9999 fois l'opérateur de comparaison booléen pour la condition i<10000.

Vous pouvez déjà imaginer qu'il est plus facile pour le compilateur d'itérer sur un objet liste déjà créé contenant 10 000 éléments que d'effectuer une opération booléenne 9 999 fois. La performance temporelle d'une boucle « for » est supérieure à celle d'une boucle « while ». Cela se reflète clairement dans le temps d'exécution : le temps nécessaire à la boucle « for » pour s'exécuter est considérablement plus court que celui requis par la boucle « while ».

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgU2V0IGBmaWJfbm9gIHRvIDU1LCB0aGUgbnVtYmVyIHVudGlsIHdoZXJlIHlvdSB3YW50IHRvIHByaW50XG5maWJfbm8gPSA1NVxuXG4jIFNldCBgZmlyc3Rfbm9gIHRvIDBcbmZpcnN0X25vID0gMFxuXG4jIFNldCBgc2Vjb25kX25vYCB0byAxXG5zZWNvbmRfbm8gPSAxXG5cbiMgU2V0IHRoZSBjb3VudGVyIGBjb3VudGAgdG8gMCBcbmNvdW50ID0gMFxuXG4jIHdoaWxlIGxvb3AgdG8gcHJpbnQgdGhlIGZpYm9uYWNjaSBzZXJpZXMgdW50aWwgdGhlIGBmaWJfbm9gXG53aGlsZSBmaXJzdF9ubyA8PSBmaWJfbm86XG4gICAgICAgIyBQcmludCBgZmlyc3Rfbm9gXG4gICAgICAgcHJpbnQoZmlyc3Rfbm8pXG4gICAgICAgXG4gICAgICAgIyBGaWJvbm5hY2NpIG51bWJlclxuICAgICAgIG50aCA9IGZpcnN0X25vICsgX19fX19fX19fX1xuICAgICAgIFxuICAgICAgICMgdXBkYXRlIHZhbHVlcyBvZiBgZmlyc3Rfbm9gIGFuZCBgc2Vjb25kX25vYFxuICAgICAgIGZpcnN0X25vID0gX19fX19fX19fX19fXG4gICAgICAgc2Vjb25kX25vID0gX19fXG4gICAgICAgXG4gICAgICAgIyBTZXQgY291bnRlciBgY291bnRgICsxXG4gICAgICAgX19fX19fX19fXyIsInNvbHV0aW9uIjoiIyBTZXQgYGZpYl9ub2AgdG8gNTUsIHRoZSBudW1iZXIgdW50aWwgd2hlcmUgeW91IHdhbnQgdG8gcHJpbnRcbmZpYl9ubyA9IDU1XG5cbiMgU2V0IGBmaXJzdF9ub2AgdG8gMFxuZmlyc3Rfbm8gPSAwXG5cbiMgU2V0IGBzZWNvbmRfbm9gIHRvIDFcbnNlY29uZF9ubyA9IDFcblxuIyBTZXQgdGhlIGNvdW50ZXIgYGNvdW50YCB0byAwIFxuY291bnQgPSAwXG5cbiMgd2hpbGUgbG9vcCB0byBwcmludCB0aGUgZmlib25hY2NpIHNlcmllcyB1bnRpbCB0aGUgYGZpYl9ub2BcbndoaWxlIGZpcnN0X25vIDw9IGZpYl9ubzpcbiAgICAgICAjIFByaW50IGBmaXJzdF9ub2BcbiAgICAgICBwcmludChmaXJzdF9ubylcbiAgICAgICBcbiAgICAgICAjIEZpYm9ubmFjY2kgbnVtYmVyXG4gICAgICAgbnRoID0gZmlyc3Rfbm8gKyBzZWNvbmRfbm9cbiAgICBcbiAgICAgICAjIHVwZGF0ZSB2YWx1ZXMgb2YgYGZpcnN0X25vYCBhbmQgYHNlY29uZF9ub2BcbiAgICAgICBmaXJzdF9ubyA9IHNlY29uZF9ub1xuICAgICAgIHNlY29uZF9ubyA9IG50aFxuICAgICAgIFxuICAgICAgICMgU2V0IGNvdW50ZXIgYGNvdW50YCArMVxuICAgICAgIGNvdW50ICs9IDEiLCJzY3QiOiJFeCgpLmNoZWNrX29iamVjdChcImZpYl9ub1wiLCAwKS5oYXNfZXF1YWxfdmFsdWUoaW5jb3JyZWN0X21zZz1cIkRpZCB5b3UgY29ycmVjdGx5IGRlZmluZSBgZmliX25vYD9cIilcbkV4KCkuaGFzX2VxdWFsX2FzdChcIllvdSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYGZpcnN0X25vYCFcIiwgY29kZT1cImZpcnN0X25vID0gMFwiLCBleGFjdD1GYWxzZSlcbkV4KCkuaGFzX2VxdWFsX2FzdChcIllvdSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYHNlY29uZF9ub2AhXCIsIGNvZGU9XCJzZWNvbmRfbm8gPSAxXCIsIGV4YWN0PUZhbHNlKVxuRXgoKS5oYXNfZXF1YWxfYXN0KFwiWW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBgY291bnRgIVwiLCBjb2RlPVwiY291bnQgPSAwXCIsIGV4YWN0PUZhbHNlKVxuXG5FeCgpLmNoZWNrX3doaWxlKDApLmNoZWNrX3Rlc3QoKS5oYXNfZXF1YWxfYXN0KClcbkV4KCkuY2hlY2tfd2hpbGUoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2Z1bmN0aW9uKFwicHJpbnRcIiwgMClcbkV4KCkuY2hlY2tfd2hpbGUoMCkuY2hlY2tfYm9keSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgbnRoYCBhcmVuJ3QgY29ycmVjdC5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZT1cIm50aCA9IGZpcnN0X25vICsgc2Vjb25kX25vXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PUZhbHNlKVxuRXgoKS5jaGVja193aGlsZSgwKS5jaGVja19ib2R5KCkuaGFzX2VxdWFsX2FzdChcIkl0IGxvb2tzIGxpa2UgdGhlIGNvbnRlbnRzIG9mIGBmaXJzdF9ub2AgYXJlbid0IGNvcnJlY3QuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9XCJmaXJzdF9ubyA9IHNlY29uZF9ub1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD1GYWxzZSlcbkV4KCkuY2hlY2tfd2hpbGUoMCkuY2hlY2tfYm9keSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgc2Vjb25kX25vYCBhcmVuJ3QgY29ycmVjdC5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZT1cInNlY29uZF9ubyA9IG50aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg9rcyBsaWtlIHRoZSB2YWx1ZSBvZiBgY291bnRgIGlzbid0IGNvcnJlY3QuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9XCJjb3VudCArPSAxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PUZhbHNlKSJ9

Veuillez maintenant tester la boucle « for » ! Veuillez noter que vous devez spécifier la plage de 0 à 11, car vous souhaitez afficher uniquement les nombres de la séquence jusqu'à 55, qui est le 11e nombre de la séquence.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW5pdGlhbGl6ZSBgZmlyc3Rfbm9gIHRvIGAwYFxuZmlyc3Rfbm8gPSAwXG5cbiMgSW5pdGlhbGl6ZSBgc2Vjb25kX25vYCB0byBgMWBcbnNlY29uZF9ubyA9IDFcblxuIyBJbml0aWFsaXplIGBudW1iZXJzYFxubnVtYmVycyA9IF9fX19fX19fX19fXG5cbiMgRmluZCBhbmQgZGlzcGxheSBGaWJvbmFjY2kgc2VyaWVzXG5mb3IgbnVtIGluIF9fX19fX186XG4gICAgICAgICAgIGlmKG51bSA8PSAxKTpcbiAgICAgICAgICAgIyBVcGRhdGUgb25seSBgbnRoYFxuICAgICAgICAgICAgICAgICAgICAgIG50aCA9IF9fX1xuICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAjIFVwZGF0ZSB0aGUgdmFsdWVzIGBudGhgLCBgZmlyc3Rfbm9gIGFuZCBgc2Vjb25kX25vYFxuICAgICAgICAgICAgICAgICAgICAgIG50aCA9IGZpcnN0X25vICsgc2Vjb25kX25vXG4gICAgICAgICAgICAgICAgICAgICAgZmlyc3Rfbm8gPSBzZWNvbmRfbm9cbiAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRfbm8gPSBfX19fX19fX19fXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICMgUHJpbnQgYG50aGBcbiAgICAgICAgICAgcHJpbnQobnRoKSIsInNvbHV0aW9uIjoiIyBJbml0aWFsaXplIGBmaXJzdF9ub2AgdG8gYDBgXG5maXJzdF9ubyA9IDBcblxuIyBJbml0aWFsaXplIGBzZWNvbmRfbm9gIHRvIGAxYFxuc2Vjb25kX25vID0gMVxuICAgICAgICAgICBcbiMgSW5pdGlhbGl6ZSBgbnVtYmVyc2Bcbm51bWJlcnMgPSByYW5nZSgwLDExKVxuXG4jIEZpbmQgYW5kIGRpc3BsYXkgRmlib25hY2NpIHNlcmllc1xuZm9yIG51bSBpbiBudW1iZXJzOlxuICAgICAgICAgICBpZihudW0gPD0gMSk6XG4gICAgICAgICAgICMgVXBkYXRlIG9ubHkgYG50aGBcbiAgICAgICAgICAgICAgICAgICAgICBudGggPSBudW1cbiAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIyBVcGRhdGUgdGhlIHZhbHVlcyBgbnRoYCwgYGZpcnN0X25vYCBhbmQgYHNlY29uZF9ub2BcbiAgICAgICAgICAgICAgICAgICAgICBudGggPSBmaXJzdF9ubyArIHNlY29uZF9ub1xuICAgICAgICAgICAgICAgICAgIGZpcnN0X25vID0gc2Vjb25kX25vXG4gICAgICAgICAgICAgICAgICAgc2Vjb25kX25vID0gbnRoXG5cbiAgICAgICAgICAgIyBQcmludCBgbnRoYFxuICAgICAgICAgICBwcmludChudGgpIiwic2N0IjoiRXgoKS5oYXNfZXF1YWxfYXN0KFwiWW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBgZmlyc3Rfbm9gIVwiLCBjb2RlPVwiZmlyc3Rfbm8gPSAwXCIsIGV4YWN0PUZhbHNlKVxuRXgoKS5oYXNfZXF1YWxfYXN0KFwiWW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBgc2Vjb25kX25vYCFcIiwgY29kZT1cInNlY29uZF9ubyA9IDFcIiwgZXhhY3Q9RmFsc2UpXG5FeCgpLmNoZWNrX29iamVjdChcIm51bWJlcnNcIilcblxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19pdGVyKCkuaGFzX2VxdWFsX2FzdCgpXG5cbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2lmX2Vsc2UoMCkuY2hlY2tfdGVzdCgpLmhhc19lcXVhbF9hc3QoXCJEaWQgeW91IGNvcnJlY3RseSBjaGVjayB0aGF0IHRoZSBudW1iZXIgaXMgc21hbGxlciBvciBlcXVhbCB0aGFuIDE/XCIsIGNvZGU9XCJudW0gPD0gMVwiLCBleGFjdD1GYWxzZSlcbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2lmX2Vsc2UoMCkuY2hlY2tfYm9keSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgbnRoYCBhcmVuJ3QgY29ycmVjdC5cIiwgY29kZT1cIm50aCA9IG51bVwiLCBleGFjdD1GYWxzZSlcblxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19ib2R5KCkuY2hlY2tfaWZfZWxzZSgwKS5jaGVja19vcmVsc2UoKS5oYXNfZXF1YWxfYXN0KFwiSXQgbG9va3MgbGlrZSB0aGUgY29udGVudHMgb2YgYG50aGAgYXJlbid0IGNvcnJlY3QuXCIsY29kZT1cIm50aCA9IGZpcnN0X25vICsgc2Vjb25kX25vXCIsIGV4YWN0PUZhbHNlKVxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19ib2R5KCkuY2hlY2tfaWZfZWxzZSgwKS5jaGVja19vcmVsc2UoKS5oYXNfZXF1YWxfYXN0KFwiSXQgbG9va3MgbGlrZSB0aGUgY29udGVudHMgb2YgYGZpcnN0X25vYCBhcmVuJ3QgY29ycmVjdC5cIixjb2RlPVwiZmlyc3Rfbm8gPSBzZWNvbmRfbm9cIiwgZXhhY3Q9RmFsc2UpXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2JvZHkoKS5jaGVja19pZl9lbHNlKDApLmNoZWNrX29yZWxzZSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgc2Vjb25kX25vYCBhcmVuJ3QgY29ycmVjdC5cIixjb2RlPVwic2Vjb25kX25vID0gbnRoXCIsIGV4YWN0PUZhbHNlKVxuXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2JvZHkoKS50ZXN0X2Z1bmN0aW9uKFwicHJpbnRcIiwgZG9fZXZhbD1GYWxzZSwgY29weT1GYWxzZSkifQ==

Boucles imbriquées

Comme vous pouvez le constater dans l'exemple ci-dessus, il existe une condition if-else à l'intérieur de la boucle while qui vous permet d'introduire des conditions supplémentaires dans votre code.

Veuillez patienter un instant.

Ce n'est pas la seule façon de personnaliser votre boucle. Vous pouvez également inclure plusieurs boucles while dans votre code existant, ce qui est appelé une boucle imbriquée. Vous pouvez modifier l'exemple ci-dessus pour inclure une autre boucle while comme indiqué ci-dessous :

# Take user input
number = 2 

# condition of the while loop
while number < 5 :  
    # condition of the nested while loop    
    while number % 2 == 0: 
        print("The number "+ str(number)+" is even")

Dans l'exemple ci-dessus, il existe une autre boucle while qui est « imbriquée » dans la boucle externe. Cette boucle interne effectue une autre vérification pour déterminer si l'number % (mod) 2 est 0.

En d'autres termes, il vérifie si le nombre est pair, puis affiche la déclaration « Le nombre est pair ».

Cependant, il y a un problème : si vous observez attentivement, vous remarquerez que, comme dans le code précédent, l'instruction number=number+1 est absente cette fois-ci. Étant donné que vous n'incrémentez la variable number nulle part, sa valeur reste la même à chaque fois et le code entre dans une boucle infinie. Cela signifie qu'une fois qu'il entre dans la boucle, il ne la quitte jamais et imprime l'instruction un nombre infini de fois, car la variable number sera toujours définie sur 2. Ce nombre est, bien entendu, inférieur à 5 et pair.

Examinons maintenant à quoi ressemblerait une boucle for imbriquée :

# Print the below statement 3 times
for number in range(3) :  
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    # Inner loop
    for another_number in range(5):  
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
-------------------------------------------
I am outer loop iteration 0
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4
-------------------------------------------
I am outer loop iteration 1
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4
-------------------------------------------
I am outer loop iteration 2
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4

Le code ci-dessus est une version modifiée du premier exemple de boucle for. Veuillez noter qu'une deuxième boucle « for » est utilisée à l'intérieur de la boucle externe.

Veuillez exécuter le code.

Vous constaterez que le contrôle entre dans la première boucle for et que la valeur de la variable number est initialisée à 0. La première instruction d'impression est exécutée, puis le contrôle passe à la deuxième boucle « for », où la valeur de la variable another_number est initialisée à 0. La première instruction d'impression dans la deuxième boucle for est imprimée une fois.

À présent, le contrôle revient à la boucle for interne et la valeur de another_number est à nouveau initialisée à l'entier suivant, puis l'instruction à l'intérieur de la fonction print() est imprimée.

Le processus susmentionné se poursuit jusqu'à ce que le contrôle ait traversé la fin de la fonction d'range(), qui est 5 dans ce cas, puis le contrôle revient à la boucle la plus externe, initialise la variable number à l'entier suivant, imprime l'instruction à l'intérieur de la fonction d'print(), visite la boucle interne, puis répète toutes les étapes ci-dessus jusqu'à ce que la fonction d'range() e soit traversée.

Ce parcours du contrôle, qui part de la boucle la plus externe, traverse la boucle interne, puis revient à la boucle externe, se poursuit jusqu'à ce que le contrôle ait couvert toute la plage, soit trois fois dans votre cas.

Maintenant que vous avez lu quelques explications sur les boucles imbriquées, il est temps de vous lancer ! Écrivez un programme Python pour construire le modèle suivant, en utilisant une boucle for imbriquée : boucles Python

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW5pdGlhbGl6ZSB0aGUgZmlyc3QgZml2ZSByb3dzXG5uID0gX1xuXG4jIFN0YXJ0IHRoZSBsb29wIHRvIHByaW50IHRoZSBmaXJzdCBmaXZlIHJvd3NcbmZvciBpIGluIHJhbmdlKF8pOlxuICAgIGZvciBqIGluIHJhbmdlKGkpOlxuICAgICAgICBwcmludCgnKiAnLCBlbmQ9XCJcIilcbiAgICBwcmludCgnJylcblxuIyBTdGFydCB0aGUgbG9vcCB0byBwcmludCB0aGUgcmVtYWluaW5nIHJvd3MgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBzdGFyc1xuZm9yIGkgaW4gcmFuZ2UobiwwLC0xKTpcbiAgICBmb3IgaiBpbiByYW5nZShfKTpcbiAgICAgICAgcHJpbnQoJyogJywgZW5kPVwiXCIpXG4gICAgcHJpbnQoJycpIiwic29sdXRpb24iOiIjIEluaXRpYWxpemUgdGhlIGZpcnN0IGZpdmUgcm93c1xubiA9IDVcblxuIyBTdGFydCB0aGUgbG9vcCB0byBwcmludCB0aGUgZmlyc3QgZml2ZSByb3dzXG5mb3IgaSBpbiByYW5nZShuKTpcbiAgICBmb3IgaiBpbiByYW5nZShpKTpcbiAgICAgICAgcHJpbnQoJyogJywgZW5kPVwiXCIpXG4gICAgcHJpbnQoJycpXG5cbiMgU3RhcnQgdGhlIGxvb3AgdG8gcHJpbnQgdGhlIHJlbWFpbmluZyByb3dzIGluIGRlY3JlYXNpbmcgb3JkZXIgb2Ygc3RhcnNcbmZvciBpIGluIHJhbmdlKG4sMCwtMSk6XG4gICAgZm9yIGogaW4gcmFuZ2UoaSk6XG4gICAgICAgIHByaW50KCcqICcsIGVuZD1cIlwiKVxuICAgIHByaW50KCcnKSIsInNjdCI6IkV4KCkuaGFzX2VxdWFsX2FzdChcIkluaXRpYWxpemUgdGhlIHZhbHVlIG9mIGBuYCBhdCA1IVwiLCBjb2RlPVwibiA9IDVcIiwgZXhhY3Q9RmFsc2UpXG5cbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJyYW5nZShuKVwiKVxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19ib2R5KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJyYW5nZShpKVwiKVxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19ib2R5KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJwcmludCAoJyogJywgZW5kPVxcXCJcXFwiKVwiKVxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19ib2R5KCkudGVzdF9mdW5jdGlvbihcInByaW50XCIsIDEpXG5cbkV4KCkuY2hlY2tfZm9yX2xvb3AoMSkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJyYW5nZShuLDAsLTEpXCIpXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDEpLmNoZWNrX2JvZHkoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19pdGVyKCkuaGFzX2VxdWFsX2FzdChcInJhbmdlKGkpXCIpXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDEpLmNoZWNrX2JvZHkoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19pdGVyKCkuaGFzX2VxdWFsX2FzdChcInByaW50ICgnKiAnLCBlbmQ9XFxcIlxcXCIpXCIpXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDEpLmNoZWNrX2JvZHkoKS50ZXN0X2Z1bmN0aW9uKFwicHJpbnRcIiwgMSkifQ==

break et continue Mots clés : Création de boucles infinies

Vous pouvez utiliser les balises break et continue dans n'importe quelle boucle que vous créez. Ces mots-clés ne sont pas limités à la rupture de boucles infinies intentionnelles, mais ils doivent être utilisés avec précaution. Ces deux mots-clés compliquent la compréhension du flux de contrôle dans la boucle et de la fin de la condition pour les autres, y compris pour vous-même lorsque vous reviendrez sur votre code dans quelques mois. De plus, il n'est pas nécessaire d'utiliser les mots-clés break et continue: comme vous avez pu le constater jusqu'à présent, vous vous en sortiez parfaitement bien sans eux !

Cependant, dans certains cas, il peut être plus clair d'écrire des boucles infinies intentionnelles plutôt que les boucles for et while traditionnelles que vous avez observées jusqu'à présent. Bien entendu, dans ces cas-là, l'utilisation de ces mots-clés est vivement recommandée.

Interruption et poursuite des boucles while en Python

Heureusement, il existe un moyen de sortir de la situation de boucle infinie décrite ci-dessus, à savoir en utilisant le mot-clé break.

# Take user input
number = 2 

# Condition of the while loop
while number < 5 :  
    # condition of the nested while loop
    while number % 2 == 0:  
        print("The number "+str(number)+" is even")
        break

    number+=1

Lorsque vous exécutez le code ci-dessus, il n'entre plus dans une boucle infinie.

« Quelle est cette sorcellerie ? » vous vous exclamerez. - Je vous répondrai : « Détendez-vous, ce n'est pas de la sorcellerie. »

Lorsque le contrôleur rencontre le mot-clé break, il comprend qu'il doit quitter la boucle (la boucle interne dans ce cas) et exécute la ligne de code suivante. Il sort donc de la boucle while interne et passe à la boucle externe, où il continue à exécuter ses tâches habituelles jusqu'à ce que la condition de la boucle while externe soit vraie.

Il est important de noter qu'une ligne de code doit suivre le mot-clé break, sinon celui-ci n'aura aucun effet. Veuillez supprimer la ligne de code après le mot-clé break dans l'exemple ci-dessus, puis exécutez le code.

Que se passerait-il si vous insériez le mot-clé continue après l'instruction break ? Vous pouvez suivre le code ci-dessous :

number = 2 

while number < 5 :
    while number % 2 == 0: 
        print("The number "+str(number)+" is even")
        break

    continue

    number+=1

Le code ci-dessus est une version légèrement modifiée de l'exemple du mot-clé break.

Lorsque vous exécutez le code ci-dessus, vous rencontrerez à nouveau une boucle infinie. Avant de vous arracher les cheveux de frustration, examinez la situation de plus près. Vous remarquerez qu'il y a un mot-clé continue après la pause. Le mot-clé continue transfère le contrôle à la boucle la plus externe avant même que la variable number ne soit incrémentée, ce qui entraîne une boucle infinie.

Interruption et poursuite des boucles « for »

Que faire si vous ne souhaitez pas exécuter la boucle for interne dans l'exemple ci-dessus pour l'ensemble de la plage ? Vous pouvez utiliser une instruction break de la même manière que vous l'avez fait dans le cas de la boucle « while ».

# Print the below statement 3 times
for number in range(3) : 
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    for another_number in range(3):
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
        break

Dans l'exemple ci-dessus, le mot-clé break après la boucle interne indique au contrôleur de sortir de la boucle interne, après quoi le contrôleur revient à la boucle externe.

Veuillez exécuter l'exemple de code ci-dessous :

# Print the below statement 3 times
for number in range(3) :  
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    continue
    for another_number in range(3):
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
        break

Dans le code ci-dessus, seule la boucle la plus externe est exécutée et le contrôle ne touche même pas la boucle interne.

« Pourquoi ? » demandez-vous.

Veuillez examiner attentivement le code. Il y a un mot-clé continue juste après la deuxième instruction « print » dans la boucle la plus externe. Il indique au contrôleur de revenir à la boucle for externe et de recommencer, ce qui explique pourquoi le contrôleur n'atteint jamais la boucle interne.

Contrairement à la boucle while, il n'est pas nécessaire d'inclure un morceau de code après le mot-clé break dans la boucle for. Une boucle break seule fonctionnera parfaitement à l'intérieur d'une boucle for.

range() par opposition à xrange()

Ces deux fonctions sont similaires, mais si vous utilisez Python 3, seule la fonction range() sera disponible. Dans Python 3.x, la fonction xrange() a été renommée en range(). Cela signifie que si vous essayez d'utiliser la fonction xrange() avec Python 3, vous obtiendrez une erreur d'NameError: name 'xrange' is not defined.

Pour mieux appréhender les similitudes entre ces deux fonctions, veuillez examiner l'exemple suivant :

# Print the below statement 3 times
for number in range(5,10,2) :  
    print("I am number : "+str(number))

# I am number : 5
# I am number : 7
# I am number : 9

En exécutant le code ci-dessus, vous constaterez que la valeur de la variable number est multipliée par deux, ce qui est dû aux paramètres de la fonction range().

Le premier paramètre de cette fonction est le paramètre de départ. C'est à partir de ce point que le contrôle commence à être compté. Le deuxième paramètre est le paramètre d'arrêt, qui correspond au point où la commande doit s'arrêter, et le dernier paramètre est la fonction de pas, qui définit le facteur par lequel la commande doit sauter pendant le comptage.

Ainsi, dans le cas ci-dessus, le contrôle commence à 5, puis parcourt la boucle jusqu'à 9 tout en ajoutant 2 à chaque comptage. Cela signifie 5, 5 + 2 = 7, 7 + 2 = 9.

Vous avez appris comment utiliser la fonction range() pour définir le nombre de fois que votre code doit s'exécuter en boucle. Dans Python 2.x, il existe également une autre méthode pour réaliser cette opération, à savoir la fonction xrange(). Veuillez exécuter le code ci-dessous :

# Print the below statement 3 times
for number in xrange(10) :  
    print("I am number : "+str(number))
I am number : 0
I am number : 1
I am number : 2
I am number : 3
I am number : 4
I am number : 5
I am number : 6
I am number : 7
I am number : 8
I am number : 9

Quelle différence avez-vous constatée entre le résultat du code ci-dessus et celui du code sans la fonction d'xrange()? Aucune différence ?

C'est exact. Vous ne constaterez aucune différence dans le résultat du code.

Par conséquent, pourquoi est-il recommandé d'utiliser la fonction xrange()? Vous y parviendrez un peu plus tard dans le tutoriel. Veuillez d'abord exécuter le code ci-dessous :

print(xrange(10))
print(range(10))
xrange(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Vous pouvez observer que dans le résultat du code ci-dessus, il existe une différence entre les résultats des deux instructions d'impression. Dans l'instruction d'impression, qui contient la fonction d'xrange(), vous obtenez l'objet de la fonction d'xrange() imprimé. Ceci diffère dans l'instruction print qui utilise la fonction d'range(): dans ce cas, vous obtenez une liste d'entiers allant de 0 à 9.

C'est précisément ce qui distingue la fonction range() de la fonction xrange().

Lorsque vous définissez la fonction d'range(), une liste de l'ensemble de la plage est enregistrée dans la mémoire RAM et vous est présentée. Cependant, lorsque vous définissez la fonction d'xrange(), aucune liste n'est stockée dans la mémoire. Au lieu de cela, la fonction xrange() génère des nombres entiers dans toute la plage lorsque cela est nécessaire. De cette manière, la fonction d'xrange() permet de préserver la mémoire dans les systèmes disposant de ressources limitées.

Perfectionnez vos compétences en Python !

Félicitations, vous avez terminé ce tutoriel. Maintenant que vous avez appris à utiliser les boucles en Python, nous vous invitons à vous exercer. Plus vous vous entraînez, mieux c'est.

Sujets

Cours Python connexes

Cours

Introduction à Python

4 h
6.5M
Apprenez les bases de l’analyse de données avec Python en quatre heures et explorez ses principaux packages.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

Didacticiel

Tutoriel sur la fonction range() en Python

Découvrez la fonction range() de Python et ses capacités à l'aide d'exemples.
Aditya Sharma's photo

Aditya Sharma

Didacticiel

Instructions IF, ELIF et ELSE en Python

Dans ce tutoriel, vous apprendrez exclusivement les instructions if else en Python.
Sejal Jaiswal's photo

Sejal Jaiswal

Didacticiel

if…elif…else dans le tutoriel Python

Découvrez comment créer des instructions if…elif…else en Python.
DataCamp Team's photo

DataCamp Team

Didacticiel

Tutoriel Python : concaténation de chaînes de caractères

Découvrez différentes méthodes pour concaténer des chaînes de caractères en Python, avec des exemples illustrant chaque technique.
DataCamp Team's photo

DataCamp Team

Didacticiel

Séquence de Fibonacci en Python : Apprenez et explorez les techniques de codage

Veuillez découvrir le fonctionnement de la suite de Fibonacci. Veuillez explorer ses propriétés mathématiques et ses applications concrètes.
Laiba Siddiqui's photo

Laiba Siddiqui

Didacticiel

30 astuces Python pour améliorer votre code, accompagnées d'exemples

Nous avons sélectionné 30 astuces Python intéressantes que vous pouvez utiliser pour améliorer votre code et développer vos compétences en Python.
Kurtis Pykes 's photo

Kurtis Pykes

Voir plusVoir plus