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

Le don à une association

Corentin décide de soutenir financièrement une association pour encourager les actions menées. La première année il donne 100€. Chaque année il augmente de 10% la somme donnée, donc le don de la deuxième année est de 110€.

  1. 1

    Quelle est la somme donnée la troisième année ? Donne ta réponse dans la variable don_3

    Solution

    Elle donne 10% de plus que l'année 2 donc don_3 = 110 + 110 * 10 / 100 que l'on peut aussi écrire en factorisant par 110 don_3 = 110 * (1 + 10/100). Autrement dit il faut multiplier le don de l'année 2 par 1,1 qui le coefficient multiplicateur que cette augmentation de 10%. Ce qui donne 121

    don_3 = 121
  2. 2

    À l'aide du coefficient multiplicateur détermine le don de la dixième année. Donne ta réponse dans une variable don_10. Tu peux utiliser une puissance...

    Solution

    Le don de la deuxième année est 100×1,1=110100 \times 1{,}1 = 110, le don de la troisième année est 100×1,1×1,1=121100 \times 1{,}1 \times 1{,}1 = 121 (on multiplie deux fois par 1,1)

    Pour chaque année qui passe on ajoute une multiplication par 1,1 donc pour avoir le don de la dixième année il faut multiplier neuf fois :

    100×1,1×1,1××1,19fois=121100 \times \underbrace{ 1{,}1 \times 1{,}1 \times \cdots \times 1{,}1}_{9 \mathrm{\, fois}}= 121

    Donc finalement le don de la dixième année est donnée par 100×1,19100 \times 1{,}1^9

    don_3 = 121
    don_10 = 100 * 1.1 ** 9
  3. 3

    Quelle est la somme totale donnée sur les trois premières années ? Donne ta réponse dans la variable don_total_3

    Solution

    Le don total sur les trois premières années est la somme 100+110+121100 + 110 + 121 ce qui donne 331

    don_total_3 = 331
  4. 4

    Corentin souhaite connaître à l'avance le montant total qu'il va donner sur les dix premières années.

    Crée une variable don initialisée à 0 puis utilise une boucle for pour parcourir l'ensemble des années et incrémenter la variable don.

    Solution

    Pour parcourir les dix années on peut utiliser range(10) ou range(1, 11). Ce choix va influencer la suite du code car ici l'incrémentation dépend de l'année.

    Si on utilise range(10) alors on compte les années de 0 à 9. Si on utilise range(1, 11) alors on compte les années de 1 à 10. Ce deuxième choix est plus proche de la formulation du problème. C'est ce qu'on utilise dans la suite.

    L'incrémentation dépend de l'année car on a vu que l'année n (en comptant à partir de 1) Corentin donne 100×1,1n1100 \times 1{,}1 ^ {n - 1} €, quantité par laquelle il faut incrémenter don cette année là. Donc dans ce cas l'incrément est don = don + 100 * 1.1 ** (n-1)

    On utilise un print en-dehors de la boucle pour afficher uniquement le résultat final

    don = 0
    for n in range(1, 11):
        don = don + 100 * 1.1 ** (n-1)
    
    print(don)
  5. 5

    Crée une fonction don_total dont le corps contient la boucle for précédente. Cette fonction prend l'année en argument, par exemple don_total(12) renvoie la somme totale donnée par Corentin sur les douze premières années.

    Solution

    On insère l'entête de la fonction don_total à la ligne 1. Cette fonction dépend d'une variable qui représente l'année, notons là m par exemple car n est déjà utilisé dans la boucle for.

    Ensuite on indente tout le code de la question précédente dans la fonction.

    Il faut également adapter la boucle pour qu'elle fasse les calculs de l'année 1 à m inclus donc on modifie le range en range(1, m+1)

    Enfin on utilise un return à la place du print pour renvoyer la valeur du don total.

    def don_total(m):
        don = 0
        for n in range(1, m+1):
            don = don + 100 * 1.1 ** (n-1)
        return don
  6. 6

    Quel est le don total de Corentin sur vingt ans ? Utilise ta fonction don_total dans la console pour obtenir le résultat. Tu peux arrondir le résultat renvoyer par la fonction aux centimes.

    Solution

    Pour un résultat plus lisible arrondissons d'abord au centime le résultats renvoyé par don_total à l'aide de la fonction round

    def don_total(m):
        don = 0
        for n in range(1, m+1):
            don = don + 100 * 1.1 ** (n-1)
        return round(don, 2)

    On obtient alors dans la console

    >>> don_total(20)
    5727.5
    

Chargement...

Collecte des fichiers...

>>>