Contenu principal
Chapitre 5 · La boucle while › Leçon 1 sur 5

Syntaxe d'une boucle while

La boucle while s'utilise lorsqu'on ne connaît pas à l'avance le nombre d'itérations de notre programme. C'est la différence avec la boucle for, qui elle s'utilise lorsque le nombre d'itérations est connu. Il y a un exemple dans l'éditeur.

En effet while signifie tant que, et tant que la condition à vérifier est vraie, le code indenté est exécuté à chaque itération. Ici tant que la variable somme est strictement inférieure à 100, alors n est incrémenté de 1 et somme est incrémenté de n.

Que fait ce code ? La variable n vaut initialement 0 et prend successivement les valeurs 1 puis 2 puis 3 etc. La variable somme vaut initialement 0, puis est successivement incrémentée de 1 puis 2 puis 3 etc. donc correspond à la somme 1+2+3+1+2+3+\cdots

La boucle s'arrête dès que la condition somme < 100 n'est plus vraie, autrement dit dès que la somme est supérieure ou égale à 100. Ainsi n correspond au nombre d'entiers consécutifs à additionner pour avoir une somme supérieure ou égale à 100.

  1. 1

    Combien faut-il additionner de nombres consécutifs pour avoir une somme supérieure ou égale à 100 ? Exécute le code pour le savoir.

  2. 2

    Quelle est la somme de ces quatorze premiers entiers ? Ajoute un print pour la connaître.

    Solution

    La variable somme contient le résultat à afficher.

    somme = 0
    n = 0
    while somme < 100:
        n = n + 1
        somme = somme + n
    print(n)
    print(somme)
  3. 3

    Combien d'entiers consécutifs faut-il additionner pour obtenir une somme supérieure ou égale à 500 ? Modifie le code pour déterminer ce nouveau seuil.

    Solution

    Il faut modifier la condition d'arrêt somme < 100 et la remplacer par somme < 500

    somme = 0
    n = 0
    while somme < 500:
        n = n + 1
        somme = somme + n
    print(n)
    print(somme)
  4. 4

    Modifie la manière dont la variable somme est incrémentée pour que la boucle while calcule la somme de carrés d'entiers consécutifs comme 12+22+32+1^2 + 2^2 +3^2 + \cdots

    Combien de carrés d'entiers consécutifs sont nécessaires pour obtenir une somme supérieure ou égale à 1000 ? Affiche le seuil ainsi que la somme.

    Solution

    Pour obtenir la somme des carrés d'entiers il faut changer la manière d'incrémenter somme. À l'itération n on ajoute n ** 2 et non plus juste n

    On veut également modifier la condition d'arrêt car le seuil est atteint lorsque la somme est supérieure ou égale à 1000. On utilise donc la condition d'arrêt somme < 1000

    somme = 0
    n = 0
    while somme < 1000:
        n = n + 1
        somme = somme + n ** 2
    print(n)
    print(somme)
  5. 5

    Une pyramide à base carrée est construite avec des Legos. Le premier étage contient une pièce, le deuxième étage quatre pièces, le troisième étage neuf pièces etc.

    Sachant que la pyramide a nécessité un peu plus de 10000 pièces en tout, de combien d'étages est-elle constituée ? Modifie le code de manière à obtenir la réponse.

    Solution

    Il y a deux variables au problème, le numéro de l'étage et le nombre de pièces.

    Le numéro de l'étage est incrémenté de un en un, c'est la variable n. Ce type de variable qui augmente d'une unité à la fois s'appelle aussi un compteur. Le nombre de pièces augmente quant à lui de n ** 2 à chaque étage.

    Finalement le code de l'éditeur permet déjà de répondre à la question, il reste à modifier la condition d'arrêt par somme < 10000

    En effet dans ce cas la boucle va s'arrêter dès que la somme aura dépassé ce nombre, ce qui nous donne le nombre de pièces utilisées (variable somme ) et le nombre d'étages (variable n )

    somme = 0
    n = 0
    while somme < 10000:
        n = n + 1
        somme = somme + n ** 2
    print(n)
    print(somme)

Chargement...

Collecte des fichiers...

>>>