Apprenez en lisant dans l'ordre

Boucles for avec range / enumerate / zip

Apprends les boucles for en Python pour parcourir listes, chaînes et dicts et automatiser tes traitements répétitifs.

Jusqu'ici, on a appris le branchement avec if / elif et les vérifications groupées avec all() / any().

Dans cet article, tu vas découvrir l'instruction for pour exécuter le même travail sur chaque élément d'une liste. Avec if et for dans ta boîte à outils, tu peux écrire la plupart du code pratique du quotidien.

Extraire un élément à la fois avec for

Une instruction for prend un objet répétable (un iterable) comme une liste, un tuple, une chaîne ou un dict, et extrait les éléments un par un depuis le début, en associant chacun à la variable que tu nommes et en exécutant ton bloc à chaque fois.

La forme de base est une ligne for variable in iterable: plus un bloc indenté de 4 espaces.

Ce que fait une itération de for
listextraire unélémentaffecter àvariableexécuterblocélément suivantrépéter

Extraire un élément de la collectionl'affecter à la variableexécuter le bloc → passer au suivant, en répétant jusqu'à épuisement des éléments.

# Boucler sur une liste
fruits = ["pomme", "banane", "orange"]
for fruit in fruits:
    print(fruit)
# Sortie :
# pomme
# banane
# orange

# Les chaînes sont aussi itérables (un caractère à la fois)
for ch in "ABC":
    print(ch)
# Affiche A / B / C tour à tour

N'oublie pas le deux-points et l'indentation de 4 espaces

La ligne for doit se terminer par : (un deux-points), et chaque ligne du bloc doit être indentée de 4 espaces (ou une tabulation). Une indentation incohérente lève IndentationError.

Boucler sur un dict avec for

Si tu passes un dict directement à for, seules les clés sont extraites tour à tour. Pour obtenir aussi les valeurs, .items() est le choix habituel. Si tu n'as besoin que des valeurs, utilise .values().

FormeCe que tu obtiensUsage typique
for key in d:clésQuand la clé seule suffit
for value in d.values():valeursQuand tu n'as besoin que des valeurs pour de l'agrégation
for key, value in d.items():paires clé/valeurQuand tu as besoin des deux — pour de l'affichage formaté ou du filtrage
user = {"name": "alice", "age": 29, "role": "admin"}

# Clés uniquement
for key in user:
    print(key)
# name / age / role

# Valeurs uniquement
for value in user.values():
    print(value)
# alice / 29 / admin

# Clés et valeurs ensemble
for key, value in user.items():
    print(f"{key}: {value}")
# name: alice / age: 29 / role: admin

Calcule le total à partir d'un dict de produits et de prix unitaires.

① Définis prices = {"pomme": 180, "pain": 320, "lait": 250}.

② Initialise total = 0, puis boucle sur .values() avec for et ajoute chaque valeur dans total.

③ Affiche le total à la fin avec print(total).

(L'explication apparaît une fois que tu auras exécuté le code correctement.)

Éditeur Python

Exécuter le code pour voir le résultat

Répéter un nombre fixe de fois avec range()

range(n) est une fonction intégrée qui retourne la séquence d'entiers de 0 à n-1, et combinée avec for c'est la façon de référence pour écrire des boucles à compteur fixe. Il y a 3 façons courantes de l'appeler.

Comment fonctionne range()
range(5)0,1,2,3,45 itérationsproduitfor tour à tour
FormeValeurs généréesUsage
range(5)0, 1, 2, 3, 40 à n-1
range(2, 8)2, 3, 4, 5, 6, 7Spécifie début et fin (fin exclue)
range(1, 10, 2)1, 3, 5, 7, 9Spécifie début, fin et pas
# Boucler de 0 à 4
for i in range(5):
    print(i)
# Affiche 0 1 2 3 4 (5 lignes)

# 2 à 7
for i in range(2, 8):
    print(i)

# 1 à 9 par pas de 2
for i in range(1, 10, 2):
    print(i)

# Utilise _ quand tu n'as besoin que du compteur, pas de la valeur
for _ in range(3):
    print("nouvelle tentative...")

Nommer la variable de boucle _ (un underscore) est une convention pour signaler immédiatement « cette variable n'est pas utilisée à l'intérieur ». i ou j fonctionneraient aussi, mais lire du code où ils ne sont jamais utilisés fait s'arrêter le lecteur pour se demander pourquoi — donc utilise _ quand tu ne te soucies que du compteur.

Calcule la somme des entiers de 1 à 10.

① Initialise total = 0.

② Avec for et range(), ajoute 1 à 10 dans total.

③ Affiche le total avec print(total).

Éditeur Python

Exécuter le code pour voir le résultat

enumerate et zip pour les indices et listes parallèles

Dans le code réel, tu veux souvent la position de chaque élément également, ou bien itérer sur plusieurs listes en parallèle. enumerate() et zip() rendent cela bien plus court et lisible.

enumerate() — boucler avec un indice

Envelopper une liste dans enumerate(list) te donne des paires (indice, élément) tour à tour. C'est pratique pour des affichages de classement ou des numéros de ligne dans des messages d'erreur — partout où tu veux attacher « lequel » à chaque valeur.

products = ["pomme", "pain", "lait"]

for index, name in enumerate(products):
    print(f"{index}: {name}")
# 0: pomme
# 1: pain
# 2: lait

# Pour démarrer à 1, passe le départ comme second argument
for rank, name in enumerate(products, 1):
    print(f"#{rank}: {name}")
# #1: pomme / #2: pain / #3: lait

zip() — itérer sur plusieurs listes en parallèle

zip(list1, list2, ...) te permet d'extraire les éléments de même indice ensemble depuis plusieurs listes. Il s'arrête quand la liste la plus courte est épuisée, donc c'est sûr même avec des longueurs incompatibles.

names  = ["Alice", "Léa", "Camille"]
scores = [82, 91, 65]

for name, score in zip(names, scores):
    print(f"{name} : {score} pts")
# Alice : 82 pts / Léa : 91 pts / Camille : 65 pts

Construis une liste numérotée de prix à partir de noms de produits et de prix.

① Définis items = ["pomme", "pain", "lait"] et prices = [180, 320, 250].

② En combinant enumerate et zip, affiche la numérotation à partir de 1, le nom et le prix au format 1. pomme : 180.

Éditeur Python

Exécuter le code pour voir le résultat

Contrôler les boucles avec break et continue

Il est courant de vouloir s'arrêter parce qu'on a trouvé ce qu'on cherchait ou sauter juste cette itération. Le premier utilise break pour quitter la boucle immédiatement ; le second utilise continue pour sauter le reste de cette itération et passer à l'élément suivant.

break vs. continue
boucle forif condbreakhors boucleboucle forif condcontinueélément suivantTruesortirTruesauter

break met fin à la boucle elle-même, donc les éléments restants ne sont pas évalués du tout. continue saute uniquement le reste de cette itération et passe à l'élément suivant — la boucle dans son ensemble continue. Les deux sont typiquement appelés depuis un if.

# break : s'arrêter dès qu'on trouve la cible
users = ["alice", "léa", "camille", "david"]
for name in users:
    if name == "camille":
        print("Trouvé")
        break
    print(f"vérification : {name}")
# vérification : alice / vérification : léa / Trouvé

# continue : sauter les 0 lors d'une somme
scores = [80, 0, 65, 0, 91]
total = 0
for score in scores:
    if score == 0:
        continue
    total += score
print(total)   # 80 + 65 + 91 = 236

Parcours une liste de stock, en utilisant continue pour sauter et en utilisant break quand tu repères quelque chose d'anormal.

① Définis stock = [12, 4, 0, 9, -1, 3].

② Avec enumerate, extrais une numérotation à partir de 1 et la quantité, et :

 - Pour les articles avec quantité 0, saute sans rien afficher (continue).

 - Pour un article avec quantité négative, affiche « Valeur anormale détectée au #X » et break.

 - Sinon, affiche « #X OK (Y unités) ».

Éditeur Python

Exécuter le code pour voir le résultat

Dans cet article, on a couvert la vue d'ensemble de for : itérer sur des listes et des dicts, compter avec range(), étendre avec enumerate() / zip(), et contrôler le flux avec break / continue.

Dans le prochain article, on regardera la boucle while — utilisée pour répéter quand on ne connaît pas le compteur à l'avance — et comment éviter les boucles infinies.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Que va afficher ce code ?
for i in range(2, 6):
print(i)

Question 2Quand tu déroules enumerate(['a', 'b', 'c'], 1) avec for, quelles paires sont produites ?

Question 3Que va afficher ce code ?
nums = [1, 2, 3, 4, 5]
for n in nums:
if n == 3:
continue
print(n)