Aller au contenu

Sujet n°2

Sujet original

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

Exercice n°1

Soit le couple (note,coefficient):

  • note est un nombre de type flottant (float) compris entre 0 et 20 ;
  • coefficient est un nombre entier positif.

Les résultats aux évaluations d'un élève sont regroupés dans une liste composée de couples (note, coefficient).

Écrire une fonction moyenne qui renvoie la moyenne pondérée de cette liste donnée en paramètre.

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 le résultat du calcul suivant :

\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
def moyenne(tab):
    """
    tab - list, tableau de couples (note, coefficient),
          note est de type float, avec 0 <= note <= 20
          coefficient est de type int
    Sortie: float - moyenne pondérée des couples de tab
            (somme des note*coefficient)/(somme des coefficient)
    """
    numerateur = 0
    denominateur = 0
    for couple in tab:
        numerateur += couple[0]*couple[1]
        denominateur += couple[1]
    return numerateur/denominateur


if __name__ == '__main__':
    print(moyenne([(15, 2), (9, 1), (12, 3)]) == 12.5)

Exercice n°2

On cherche à déterminer les valeurs du triangle de Pascal. Dans ce tableau de forme triangulaire, chaque ligne commence et se termine par le nombre 1. Par ailleurs, la valeur qui occupe une case située à l’intérieur du tableau s’obtient en ajoutant les valeurs des deux cases situées juste au-dessus, comme l’indique la figure suivante :

Triangle Pascal

Compléter la fonction pascal ci-après. Elle doit renvoyer une liste correspondant au triangle de Pascal de la ligne 1 à la ligne nn est un nombre entier supérieur ou égal à 2 (le tableau sera contenu dans la variable C).
La variable Ck doit, quant à elle, contenir, à l’étape numéro k, la k-ième ligne du tableau.

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):
    C = [[1]]
    for k in range(1, ...):
        Ck = [...]
        for i in range(1, k):
            Ck.append( C[...][i-1]+C[...][...] )
        Ck.append(...)
        C.append(Ck)
    return C

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]] 

Commentaire sur le code original

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

Dans le code 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]] 

Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def pascal(n):
    C = [[1]]
    for k in range(1, n+1):
        Ck = [1]
        for i in range(1, k):
            Ck.append(C[k-1][i-1]+C[k-1][i])
        Ck.append(1)
        C.append(Ck)
    return C


if __name__ == '__main__':
    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]] )