Aller au contenu

Sujet n°17

Sujet original

Pour télécharger l'énoncé original, cliquer ici.

Exercice n°1

Écrire une fonction moyenne(liste_notes) qui renvoie la moyenne pondérée des résultats contenus dans la liste liste_notes, non vide, donnée en paramètre. Cette liste contient des couples (note, coefficient) dans lesquels :

  • note est un nombre de type float compris entre 0 et 20 ;
  • coefficient est un nombre entier strictement positif.
Commentaires

Ici, le mot « liste » est à comprendre dans le sens « liste Python » (c'est-à-dire tableau) plutôt que dans le sens du type abstrait de données liste étudié en Terminale.

Par exemple, l’expression moyenne([(15, 2), (9, 1), (12, 3)]) devra renvoyer 12.5 :

\frac {2 \times 15 + 1 \times 9 + 3 \times 12}{2+1+3} = 12,5
Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def moyenne(liste_notes):
    """
    liste_notes - list, tableau non vide de couples (note, coefficient),
          note est de type float, avec 0 <= note <= 20
          coefficient est de type int strictement positif
    Sortie: float - moyenne pondérée des couples de liste_notes
            (somme des note*coefficient)/(somme des coefficient)
    """
    numerateur = 0
    denominateur = 0
    for couple in liste_notes:
        numerateur += couple[0]*couple[1]
        denominateur += couple[1]
    return numerateur/denominateur


if __name__ == '__main__':
    # Exemple de l'énoncé
    print(moyenne([(15, 2), (9, 1), (12, 3)]) == 12.5)

    # Exemples supplémentaires
    print(moyenne([(8, 2), (13.5, 1), (5, 5)]) == 6.8125)
    print(moyenne([(1, 1), (2, 1), (3, 1), (4, 1)]) == 2.5)
    print(moyenne([(1, 1), (1, 1), (1, 1)]) == 1.0)

Exercice n°2

On cherche à déterminer les valeurs du triangle de Pascal (Figure 1).

Dans le triangle de Pascal, chaque ligne commence et se termine par le nombre 1. Comme l’illustre la Figure 2, on additionne deux valeurs successives d’une ligne pour obtenir la valeur qui se situe sous la deuxième valeur.

Triangle Pascal

Compléter la fonction pascal ci-après prenant en paramètre un entier n supérieur ou égal à 2. Cette fonction doit renvoyer une liste correspondant au triangle de Pascal de la ligne 0 à la ligne n. Le tableau représentant le triangle de Pascal sera contenu dans la variable triangle.

Commentaires

A nouveau, le mot « liste » est à comprendre dans le sens « liste Python » (c'est-à-dire tableau) plutôt que dans le sens du type abstrait de données liste étudié en Terminale.

1
2
3
4
5
6
7
8
9
def pascal(n): 
    triangle= [[1]] 
    for k in range(1,...): 
        ligne_k = [...] 
        for i in range(1, k): 
            ligne_k.append(triangle[...][i-1] + triangle[...][...]) 
        ligne_k.append(...) 
        triangle.append(ligne_k) 
    return triangle
Commentaire sur le code original

Pour télécharger l'original du fichier à compléter, cliquer ici.

Dans l'énoncé original, il manquait un chevron pour représenter le « prompt » de la console :

>> pascal(4) 
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]] 

Et pour n = 5, voici ce que l’on devra obtenir :

>> pascal(5) 
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]] 

Exemples

Pour n = 4, voici ce que l’on devra obtenir :

>>> pascal(4) 
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]] 

Et pour n = 5, voici ce que l’on devra obtenir :

>>> pascal(5) 
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]] 

Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def pascal(n):
    triangle= [[1]]
    for k in range(1, n+1):
        ligne_k = [1]
        for i in range(1, k):
            ligne_k.append(triangle[k-1][i-1] + triangle[k-1][i])
        ligne_k.append(1)
        triangle.append(ligne_k)
    return triangle


if __name__ == '__main__':
    # Exemples de l'énoncé
    print(pascal(4) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]] )
    print(pascal(5) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]] )

    # Exemples supplémentaires
    print(pascal(2) == [[1], [1, 1], [1, 2, 1]] )
    print(pascal(3) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]] )
    print(pascal(10) == [   [1],
                        [1, 1],
                        [1, 2, 1],
                        [1, 3, 3, 1],
                        [1, 4, 6, 4, 1],
                        [1, 5, 10, 10, 5, 1],
                        [1, 6, 15, 20, 15, 6, 1],
                        [1, 7, 21, 35, 35, 21, 7, 1],
                        [1, 8, 28, 56, 70, 56, 28, 8, 1],
                        [1, 9, 36, 84, 126, 126, 84, 36, 9, 1],
                        [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]] )