Aller au contenu

Index des sujets 2022

Corrigé sujet 29 - Année : 2022

Sujet 29 - 2022

Exercice 1

Bug

  1. La fonction s'appelle fibonacci (un n et deux c) et on parle de la suite de Fibonnaci (un c et deux n). L'orthographe correcte est Fibonacci.
1
2
3
4
5
def fibonacci(n):
    d = {1 : 1, 2 : 1}
    for k in range(3, n+1):
        d[k] = d[k-1] + d[k-2]
    return d[n]

Commentaires

On peut aussi utiliser une liste, mais les indices sont alors décalés (le premier élément d'une liste a pour indice 0 alors que le premier élément de la suite a pour indice 1. L'utilisation d'un dictionnaire simplifie le problème.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
liste_eleves = ['a','b','c','d','e','f','g','h','i','j']
liste_notes = [1, 40, 80, 60, 58, 80, 75, 80, 60, 24]

def meilleures_notes():
    note_maxi = 0
    nb_eleves_note_maxi = 0 #(1)
    liste_maxi =  []

    for compteur in range(len(liste_eleves)):
        if liste_notes[compteur] == note_maxi: #(2)
            nb_eleves_note_maxi = nb_eleves_note_maxi + 1
            liste_maxi.append(liste_eleves[compteur])
        if liste_notes[compteur] > note_maxi:
            note_maxi = liste_notes[compteur] 
            nb_eleves_note_maxi = 1 #(3)
            liste_maxi = [liste_eleves[compteur]]

    return (note_maxi,nb_eleves_note_maxi,liste_maxi)
  1. On travaille avec trois variables : la note maximale courante, le nombre d'élèves ayant cette note et la liste de ces élèves.
  2. Lors du parcours de la liste de note, si on trouve une note égale à la note maximale alors on ajoute l'élève concernée à la liste de ceux ayant la meilleure note
  3. Si on trouve une note supérieur au maximum courant, cette note devient le nouveau maximum et un seul élève a cette note, liste_maxi et nb_eleves_note_maxi sont donc mis à jour en conséquence

Attention

L'intérêt d'une fonction est de pouvoir être appelée au sein d'un même programme avec des arguments différents. Par conséquent, liste_eleves et liste_notes devraient être des arguments de la fonction meilleures_notes et pas des variables globales du programme. Cette façon de procéder est clairement une mauvaise pratique de programmation.