Les boucles WHILE.

Introduction:

En Python, la boucle while permet de répéter une série d'instructions tant qu'une condition est vraie.

Elle est utile lorsqu’on ne sait pas à l’avance combien de fois on devra répéter le code.

1. La boucle while

La boucle while répète un bloc d'instructions tant qu’une condition est vraie. Elle est utile lorsqu’on ne sait pas d’avance combien de fois répéter : on s’arrête dès que la condition devient fausse.

1. Syntaxe

while condition:
    # bloc exécuté tant que vaut True

2. Exemple : décompte à rebours

n = 5
while n > 0:
    print(n)
    n -= 1            # on rapproche n de 0 pour arrêter la boucle
print("Décollage !")

Sortie : 5 4 3 2 1 Décollage !

3. Exemple : demander un mot de passe

secret = "python"
code = ""
while code != secret:
    code = input("Mot de passe : ")
print("Accès autorisé")

4. Attention aux boucles infinies !

Si la condition ne devient jamais fausse, la boucle tourne sans fin :
while True: crée volontairement une boucle infinie, qu’on interrompt généralement avec break ou Ctrl + C.

À retenir

2. Exercice :

Exécuter le programme suivant puis donner une explication au dernier nombre affiché.

x=0 while x != 100: print(x) x = x + 10

Affichage :

3. Exercice :

Exécuter le programme suivant puis donner une explication au dernier nombre affiché.

x=0 while x != 100: x = x + 10 print(x)

Affichage :

4. Exercice :

Écris une fonction appelée somme_n_premiers_while qui prend un entier n en paramètre et utilise une boucle while pour calculer la somme des n premiers entiers, de 1 à n (inclus).

La fonction doit retourner cette somme :

  • Par exemple, pour n = 5, elle renverra 15, car 1 + 2 + 3 + 4 + 5 = 15.

Exemples :

  • somme_n_premiers_while(0)0
  • somme_n_premiers_while(5)15
  • somme_n_premiers_while(10)55
def somme_n_premiers_while(n): somme = 0 nombre = 1 while ........... :

Tests :

# Tests

Console :



    
>>>

5. Exercice :

Mia dépose exactement 2€ dans sa tirelire chaque jour. Elle veut savoir combien de jours il lui faudra pour atteindre (ou dépasser) une somme cible.

Écris une fonction appelée jours_economie qui prend :

  • montant_cible la somme que Mia souhaite réunir.

La fonction doit :

  1. Initialiser un compteur de jours et un total économisé à0.
  2. Utiliser une boucle while pour ajouter 2€ par jour jusqu’à ce que le total économisé soit supérieur ou égal à montant_cible.
  3. Retourner le nombre de jours nécessaires.

Exemples:

  • jours_economie(0)0
  • jours_economie(1)1
  • jours_economie(5)3

Tests :

# Tests

Console :



    
>>>

6. Exercice :

Un robot monte un escalier. Il grimpe 3 marches par jour, mais chaque nuit il glisse de 1 marche.

Écris une fonction appelée jours_pour_haut qui prend:

  • hauteur la hauteur de l’escalier en nombre de marches.

La fonction doit:

  1. Initialiser un compteur de jours et une position actuelle à 0.
  2. Chaque jour, le robot grimpe de 3 marches.
  3. Vérifie s’il a atteint ou dépassé la hauteur visée : si oui, retourne le nombre de jours.
  4. Sinon, il glisse de 1 marche et continue.

Exemples:

  • jours_pour_haut(0)0
  • jours_pour_haut(2)1
  • jours_pour_haut(5)2
  • jours_pour_haut(10)4

Tests :

# Tests

Console :



    
>>>

7. Exercice :

Sophie doit emballer N cadeaux dans des boîtes. Chaque boîte peut contenir C cadeaux. Elle prépare une boîte après l’autre tant qu’il reste des cadeaux à emballer.

Écrire une fonction nombre_boites(N, C) qui calcule et renvoie le nombre de boîtes nécessaires pour emballer tous les cadeaux.

La fonction doit :

  1. Si N vaut 0, retourner 0.
  2. Initialiser un compteur compte à 0 et un nombre restant de cadeaux à N.
  3. Tant que le nombre de cadeaux restants est strictement positif :
    • Soustraire C du nombre restant.
    • Incrémenter compte de 1.
  4. Retourner la valeur de compte.
def nombre_boites(N, C):
    """
    Calcule le nombre de boîtes nécessaires pour emballer N cadeaux,
    en mettant jusqu'à C cadeaux par boîte.
    """
    # À vous de jouer !
    pass

Tests :

# Tests

Console :


    
>>>

8. Exercice :

Une culture bactérienne compte 1 bactérie au départ. Chaque heure, la population double.

Écrire une fonction heures_doublement(N) qui calcule et renvoie le nombre d’heures nécessaires pour atteindre au moins N bactéries.

La fonction doit :

  1. Si N vaut 1 ou moins, retourner 0 (déjà atteint).
  2. Initialiser un compteur heures à 0 et une variable population à 1.
  3. Tant que population est inférieur à N :
    • Multiplier population par 2.
    • Incrémenter heures de 1.
  4. Retourner la valeur de heures.
def heures_doublement(N):
    """
    Calcule le nombre d'heures nécessaires pour qu'une population
    de bactéries, partant de 1, atteigne au moins N par doublement horaire.
    """
    # À vous de jouer !
    pass

Tests :

# Tests

Console :


    
>>>

9. Exercice :

La factorielle d’un entier k, notée k!, est le produit de tous les entiers de 1 à k. Par exemple :

  • \(1! = 1\)
  • \(2! = 2 \times 1 = 2\)
  • \(3! = 3 \times 2 \times 1 = 6\)
  • \(4! = 4 \times 3 \times 2 \times 1 = 24\)

On cherche le plus petit entier k tel que k! soit au moins égal à N.

Écrire une fonction etapes_factorielle(N) qui renvoie ce k.

La fonction doit :

  1. Initialiser k à 1 et fact à 1.
  2. Tant que fact < N :
    • Incrémenter k de 1.
    • Multiplier fact par k.
  3. Retourner la valeur de k.
def etapes_factorielle(N):
    """
    Renvoie le plus petit k tel que k! >= N.
    """
    # À vous de jouer !
    pass

Tests :

# Tests

Console :


    
>>>