Boucles et Itérations en Python
Introduction aux Boucles
Les boucles permettent de répéter l'exécution d'un bloc de code plusieurs fois. Python propose deux types de boucles principales : for et while.
La Boucle for
La boucle for est utilisée pour itérer sur une séquence (liste, tuple, chaîne de caractères, etc.) ou tout autre objet itérable.
Syntaxe de base :
for élément in séquence:
# bloc de code à répéter
Exemple avec une liste :
fruits = ["pomme", "banane", "orange"]
for fruit in fruits:
print(fruit)
# Sortie :
# pomme
# banane
# orange
Exemple avec une chaîne de caractères :
mot = "Python"
for lettre in mot:
print(lettre)
# Sortie :
# P
# y
# t
# h
# o
# n
La Fonction range()
La fonction range() génère une séquence de nombres, très utile avec les boucles for.
Syntaxes de range() :
range(stop) # de 0 à stop-1
range(start, stop) # de start à stop-1
range(start, stop, step) # de start à stop-1 avec pas de step
Exemples pratiques :
# De 0 à 4
for i in range(5):
print(i)
# De 2 à 6
for i in range(2, 7):
print(i)
# Compter à rebours
for i in range(5, 0, -1):
print(i)
La Boucle while
La boucle while exécute un bloc de code tant qu'une condition est vraie.
Syntaxe de base :
while condition:
# bloc de code à répéter
Exemples :
# Compter de 1 à 5
compteur = 1
while compteur <= 5:
print(compteur)
compteur += 1
# Sortie : 1 2 3 4 5
# Saisie utilisateur avec validation
nombre = 0
while nombre < 1 or nombre > 10:
nombre = int(input("Entrez un nombre entre 1 et 10 : "))
print(f"Vous avez choisi : {nombre}")
Instructions de Contrôle des Boucles
break - Interrompre une boucle
L'instruction break permet de sortir immédiatement d'une boucle.
for i in range(10):
if i == 5:
break
print(i)
# Sortie : 0 1 2 3 4
continue - Passer à l'itération suivante
L'instruction continue saute le reste du code de l'itération courante et passe à la suivante.
for i in range(10):
if i % 2 == 0: # si i est pair
continue
print(i)
# Sortie : 1 3 5 7 9 (nombres impairs seulement)
else avec les boucles
Les boucles peuvent avoir une clause else qui s'exécute quand la boucle se termine normalement (sans break).
for i in range(5):
print(i)
else:
print("Boucle terminée normalement")
# Sortie : 0 1 2 3 4 Boucle terminée normalement
for i in range(5):
if i == 3:
break
print(i)
else:
print("Boucle terminée normalement")
# Sortie : 0 1 2 (le else n'est pas exécuté à cause du break)
Boucles Imbriquées
Vous pouvez mettre une boucle à l'intérieur d'une autre boucle.
# Table de multiplication
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} x {j} = {i * j}")
print() # ligne vide entre les tables
# Sortie :
# 1 x 1 = 1
# 1 x 2 = 2
# 1 x 3 = 3
#
# 2 x 1 = 2
# ...
Comparaison entre for et while
Boucle for |
Boucle while |
| Utilisée quand on connaît le nombre d'itérations |
Utilisée quand on ne connaît pas le nombre d'itérations |
| Itère sur une séquence |
Exécute tant qu'une condition est vraie |
| Gère automatiquement le compteur |
Nécessite de gérer manuellement la condition |
| Moins de risque de boucle infinie |
Risque de boucle infinie si la condition ne devient jamais fausse |
Exemples Pratiques Complets
Exemple 1 : Calculateur de Factorielle
# Calcul de factorielle avec for
nombre = 5
factorielle = 1
for i in range(1, nombre + 1):
factorielle *= i
print(f"La factorielle de {nombre} est {factorielle}")
# Avec while
nombre = 5
factorielle = 1
compteur = 1
while compteur <= nombre:
factorielle *= compteur
compteur += 1
print(f"La factorielle de {nombre} est {factorielle}")
Exemple 2 : Jeu de Devinette
import random
nombre_secret = random.randint(1, 100)
essais = 0
trouve = False
print("Devinez le nombre entre 1 et 100 !")
while not trouve:
essai = int(input("Votre proposition : "))
essais += 1
if essai == nombre_secret:
trouve = True
print(f"Bravo ! Vous avez trouvé en {essais} essais.")
elif essai < nombre_secret:
print("Trop petit !")
else:
print("Trop grand !")
Exemple 3 : Analyse de Liste
nombres = [12, 45, 23, 67, 34, 89, 56]
# Trouver le maximum
maximum = nombres[0]
for nombre in nombres:
if nombre > maximum:
maximum = nombre
print(f"Le plus grand nombre est : {maximum}")
# Compter les nombres pairs
compteur_pairs = 0
for nombre in nombres:
if nombre % 2 == 0:
compteur_pairs += 1
print(f"Il y a {compteur_pairs} nombres pairs")
# Calculer la moyenne
somme = 0
for nombre in nombres:
somme += nombre
moyenne = somme / len(nombres)
print(f"La moyenne est : {moyenne:.2f}")
Exercices Pratiques
Exercice 1 : Triangle d'Étoiles
hauteur = 5
for i in range(1, hauteur + 1):
print("*" * i)
# Sortie :
# *
# **
# ***
# ****
# *****
Exercice 2 : Nombre Premier
nombre = 17
est_premier = True
if nombre > 1:
for i in range(2, int(nombre**0.5) + 1):
if nombre % i == 0:
est_premier = False
break
else:
est_premier = False
if est_premier:
print(f"{nombre} est un nombre premier")
else:
print(f"{nombre} n'est pas un nombre premier")
Exercice 3 : Fibonacci
n = 10
a, b = 0, 1
print("Suite de Fibonacci :")
for i in range(n):
print(a, end=" ")
a, b = b, a + b
# Sortie : 0 1 1 2 3 5 8 13 21 34
Bonnes Pratiques
- Utilisez
for quand vous connaissez le nombre d'itérations
- Utilisez
while quand vous dépendez d'une condition
- Évitez les boucles infinies en vous assurant que la condition devienne fausse
- Utilisez
break et continue avec parcimonie
- Choisissez des noms de variables significatifs pour les compteurs
Attention aux boucles infinies : Avec while, assurez-vous que la condition devienne éventuellement fausse, sinon la boucle ne s'arrêtera jamais !
Astuce : Utilisez enumerate() avec les boucles for pour obtenir à la fois l'index et la valeur lors de l'itération sur une séquence.
Résumé
for itère sur des séquences avec range(), listes, chaînes, etc.
while répète tant qu'une condition est vraie
break sort immédiatement d'une boucle
continue passe à l'itération suivante
else s'exécute quand une boucle se termine normalement
- Les boucles imbriquées permettent des motifs complexes
range() génère des séquences de nombres pour les boucles