COURS 13 PYTHON

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
 
Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam