Contenu principal
Chapitre 4 · La boucle for › Leçon 5 sur 9

La pyramide humaine

Des forains s'entraînent pour faire la pyramide humaine la plus haute. Elle doit avoir onze niveaux avec une personne au sommet, deux personnes au niveau deux, trois personnes au niveau suivant etc. De combien de personnes ont-ils besoin ?

Il faut additionner le nombre de personnes de chaque niveau de la pyramide. Cela revient à faire la somme 1+2+3++111+2+3+\cdots+11. On va voir comment la boucle for de l'éditeur permet de faire ce calcul.

On commence par définir une variable somme que l'on va incrémenter petit à petit : pour chaque niveau n de la pyramide on incrémente la somme du nombre de personnes correspondant. C'est la boucle for des lignes 2 et 3 qui réalise cette incrémentation.

  1. 1

    Ajoute un print à la ligne 4 pour connaître la valeur de la variable somme à chaque itération de la boucle for.

    Solution

    Pour afficher la valeur de la variable somme à chaque itération, il faut placer le print à l'intérieur de la boucle for. Autrement dit il faut indenter cette instruction :

    somme = 0
    for n in range(1,12):
        somme = somme + n
        print(somme)

    Au final 66 personnes sont requises pour cette pyramide

  2. 2

    Pour connaître uniquement la valeur finale de la variable somme il faut désindenter ton print c'est-à-dire retirer l'indentation pour qu'il ne soit plus dans la boucle for.

    Fais la modification nécessaire pour n'afficher que le résultat final. Combien de personnes faut-il pour une pyramide à onze niveaux ?

    Solution

    Pour afficher uniquement la valeur finale de la variable somme, il faut retirer l'indentation de l'instruction print.

    On peut également ajouter un saut de ligne pour qu'il soit visuellement plus clair que cette ligne ne fait pas partie de la boucle :

    somme = 0
    for n in range(1,12):
        somme = somme + n
    
    print(somme)
  3. 3

    Les forains souhaitent composer les niveaux avec uniquement des hommes ou des femmes une fois sur deux : les niveaux 1, 3, 5 ... 11 sont constitués d'hommes et les niveaux 2, 4 ... 10 de femmes.

    Combien d'hommes sont nécessaires pour cette pyramide ? Modifie la boucle for pour avoir la réponse.

    Je te conseille de laisser le print indenté pour voir la somme s'incrémenter. Comme ça tu peux vérifier la séquence de nombres.

    Solution

    Pour compter le nombre d'hommes, il faut faire la somme des nombres impairs 1+3+5++111+3+5+\cdots+11. Comme deux nombres impairs sont séparés de 2, on obtient cette somme en précisant le pas dans la fonction range

    somme = 0
    for n in range(1,12,2):
        somme = somme + n
    
    print(somme)
  4. 4

    Combien de femmes sont nécessaires pour cette pyramide ? Donne ta réponse dans une variable nb_femmes.

    Solution

    D'après la question 2 il y a 55 forains en tout dont 36 hommes d'après la question précédente. Donc il y a 6636=3066-36=30 femmes dans la pyramide

    somme = 0
    for n in range(1,12,2):
        somme = somme + n
    
    nb_femmes = 30
  5. 5

    Pour rendre le spectacle unique, les forains décident de réaliser une pyramide à base carrée. Comme pour les pyramides égyptiennes, chaque niveau est un carré : il y a une personne sur le premier niveau, puis un carré de 4 personnes au deuxième niveau, puis un carré de 9 personnes au niveau suivant etc.

    L'objectif est de réussir à faire six étages. Combien faut-il de personnes pour construire cette pyramide ? Modifie la boucle for pour faire le calcul. Je te conseille de laisser le print indenté pour voir la somme augmenter.

    Solution

    Comme il y a une personne sur le niveau 1, quatre personnes sur le niveau 2, neuf personnes sur le niveau 3 etc. le nombre total de forains est donné par la somme 1+4+9+1 + 4 + 9 + \cdots qui est la somme des carrés 12+22+32++621^2 + 2^2 + 3^2 + \cdots + 6^2

    Comme la somme vaut initialement 0 (car somme = 0 sur la ligne 1) il faut incrémenter la somme pour chacun des six niveaux. On commence donc par créer une boucle qui parcourt les six niveaux. Pour cela on utilise range(1,7)

    Il faut ensuite incrémenter la variable somme. Au niveau 1 on ajoute une personne, au niveau 2 on ajoute 4 personnes etc. En général, au niveau nn on ajoute n2n^2 personnes. Donc il faut incrémenter somme de n ** 2, ce qui donne somme = somme + n ** 2

    somme = 0
    for n in range(1,7):
        somme = somme + n ** 2
    
    print(somme)

Chargement...

Collecte des fichiers...

>>>