Retour au cours

boucles : for, while, parcours de séquences

dans cette leçon, vous allez apprendre à répéter des instructions avec les boucles for et while, à parcourir des séquences, à utiliser des compteurs, et à arrêter ou sauter des itérations.

objectifs

  • utiliser for pour parcourir des séquences et itérables
  • utiliser while pour répéter jusqu’à ce qu’une condition soit fausse
  • comprendre break, continue et l’option else sur les boucles
  • éviter les boucles infinies
  • appliquer de bonnes pratiques de parcours

for : parcours direct

en python, for parcourt directement les éléments d’un itérable (liste, chaîne, set, dict…).

for fruit in ["pomme", "banane", "cerise"]:
    print(fruit)

sur une chaîne :

for ch in "abc":
    print(ch)

sur un dictionnaire :

d = {"a": 1, "b": 2}
for key, value in d.items():
    print(key, value)

while : boucle conditionnelle

exécute tant que la condition est vraie.

n = 3
while n > 0:
    print(n)
    n -= 1
print("décollage")

⚠ risque de boucle infinie si la condition reste vraie pour toujours :

while True:
    cmd = input("> ")
    if cmd == "quit":
        break

break, continue, else

  • break : stoppe la boucle immédiatement
  • continue : passe à l’itération suivante
  • else : exécuté si la boucle termine sans break
# rechercher un élément
target = 7
for n in [1, 3, 7, 9]:
    if n == target:
        print("trouvé")
        break
else:
    print("absent")
# filtrer pairs
for n in range(6):
    if n % 2:
        continue
    print(n)

parcours avec index

range pour indices, enumerate pour index + valeur.

fruits = ["pomme", "banane", "cerise"]
for i in range(len(fruits)):
    print(i, fruits[i])

for i, fruit in enumerate(fruits, start=1):
    print(i, fruit)

imbrication de boucles

for x in range(3):
    for y in range(2):
        print(x, y)

bonnes pratiques

  • préférez for element in iterable plutôt que for i in range(len(...))
  • utilisez enumerate pour index + valeur
  • attention aux modifications d’une liste pendant l’itération (préférez créer une nouvelle liste)
  • pour répéter un nombre fixe de fois, for _ in range(n):

mini exemples exécutables

# table de multiplication
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i*j:2}", end=" ")
    print()
# compte à rebours
import time
for n in range(3, 0, -1):
    print(n)
    time.sleep(1)
print("go !")
# accumulation
total = 0
nums = [1, 2, 3]
for n in nums:
    total += n
print(total)
# lecture ligne par ligne d'un fichier
from pathlib import Path
for line in Path("data.txt").read_text(encoding="utf-8").splitlines():
    print(line)

pièges courants

  • boucle infinie avec while → vérifiez que la condition se mettra à False
  • oublier break dans une boucle de recherche → le else s’exécutera
  • confusion for i in iterable (valeurs) vs for i in range(...) (indices)
  • oublier : après for ou while

exercices

  1. somme pairs sum_even(nums) : somme des nombres pairs d’une liste.

  2. filtrage filter_short(words, max_len) : retourne les mots dont la longueur est ≤ max_len.

  3. recherche prime écrire une boucle qui trouve le premier nombre premier > 1000.

  4. boucle sécurisée lire des entrées utilisateur jusqu’à stop, ignorer les entrées vides, afficher les valides.

  5. multiplication croisée imprimer toutes les paires (x, y) pour x ∈ {1,2,3} et y ∈ {a,b}.