Suite de Fibonacci - Sujet 03 - EP NSI 2025

Moyen Officiel
Python (3.14.0)

Énoncé du problème

EXERCICE 1 (10 points)

On s’intéresse à la suite d’entiers définie par :

  • les deux premières valeurs sont égales à 1 ;
  • ensuite, chaque valeur est obtenue en faisant la somme des deux valeurs qui la précèdent.

La troisième valeur est donc 1 + 1 = 2, la quatrième est 1 + 2 = 3, la cinquième est 2 + 3 = 5, la sixième est 3 + 5 = 8, et ainsi de suite.

Cette suite d’entiers est connue sous le nom de suite de Fibonacci.

Écrire en Python une fonction fibonacci qui prend en paramètre un entier n supposé strictement positif et qui renvoie le terme d’indice n de cette suite.

Exemples :

>>> fibonacci(1)
1
>>> fibonacci(2)
1
>>> fibonacci(25)
75025

EXERCICE 2 (10 points)

On considère la fonction eleves_du_mois prenant en paramètres eleves et notes deux tableaux non vides de même longueur, le premier contenant le nom des élèves et le second, des entiers positifs désignant leur note à un contrôle de sorte que eleves[i] a obtenu la note notes[i].

Cette fonction renvoie le couple constitué de la note maximale attribuée et des noms des élèves ayant obtenu cette note regroupés dans un tableau.

Ainsi, l’instruction eleves_du_mois(['a', 'b', 'c', 'd'], [15, 18, 12, 18]) renvoie le couple (18, ['b', 'd']).

Compléter le code suivant :

def eleves_du_mois(eleves, notes):
    note_maxi = 0
    meilleurs_eleves = ...

    for i in range(...):
        if notes[i] == ...:
            meilleurs_eleves.append(...)
        elif notes[i] > note_maxi:
            note_maxi = ...
            meilleurs_eleves = [...]

    return (note_maxi, meilleurs_eleves)

Exemples :

>>> eleves_nsi = ['a','b','c','d','e','f','g','h','i','j']
>>> notes_nsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]
>>> eleves_du_mois(eleves_nsi, notes_nsi)
(80, ['c', 'f', 'h'])

Les contraintes ci-dessous sont ajoutées par la plateforme et ne font pas partie du sujet.

Exercice 1

Contraintes :

  • n est un entier avec 1 <= n <= 30
  • l’indexation commence à 1 : le terme d’indice 1 et le terme d’indice 2 valent tous les deux 1
  • fibonacci(n) renvoie un entier

Exercice 2

Contraintes :

  • eleves et notes sont deux tableaux non vides de même longueur : 1 <= len(eleves) == len(notes) <= 10^3
  • eleves[i] est une chaîne de caractères non vide de longueur au plus 20 ; les noms ne sont pas nécessairement deux à deux distincts
  • notes[i] est un entier positif : 0 <= notes[i] <= 10^4
  • eleves_du_mois(eleves, notes) renvoie un couple (entier, tableau de chaînes), le tableau contenant les noms des élèves ayant la note maximale dans l’ordre où ils apparaissent dans eleves