Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Épreuve pratique en NSI : Parution de la banque de sujets
brève mise en ligne le 26 mars 2026

Les sujets 2026 sont disponibles.
Vous trouverez dans quelques jours des propositions de correction sur les sites suivants :

En attendant, en voici un pris au hasard, le SUJET 10 avec une proposition de correction :
On rappelle à l’élève amnésique qu’il existe une aide dans Python qui peut lui rafraichir la mémoire :

help(dict)

1ère partie

donnees = [
    {"jour": "2025-02-04", "heure": "00:00", "chaude": 2, "froide": 3},
    {"jour": "2025-02-04", "heure": "01:00", "chaude": 1, "froide": 2},
    {"jour": "2025-02-04", "heure": "02:00", "chaude": 0, "froide": 0},
    {"jour": "2025-02-04", "heure": "03:00", "chaude": 0, "froide": 0},
    {"jour": "2025-02-04", "heure": "04:00", "chaude": 0, "froide": 1},
    {"jour": "2025-02-04", "heure": "05:00", "chaude": 0, "froide": 0},
    {"jour": "2025-02-04", "heure": "06:00", "chaude": 4, "froide": 6},
    {"jour": "2025-02-04", "heure": "07:00", "chaude": 6, "froide": 8},
    {"jour": "2025-02-05", "heure": "00:00", "chaude": 0, "froide": 0},
    {"jour": "2025-02-05", "heure": "01:00", "chaude": 1, "froide": 1},
    {"jour": "2025-02-05", "heure": "02:00", "chaude": 1, "froide": 1},
    {"jour": "2025-02-05", "heure": "03:00", "chaude": 1, "froide": 1},
    {"jour": "2025-02-05", "heure": "04:00", "chaude": 0, "froide": 0},
    {"jour": "2025-02-05", "heure": "05:00", "chaude": 0, "froide": 0},
]
# -----------------------------
# Fonctions à compléter
# -----------------------------

def total_conso(donnees, jour):
    resultat = 0
    for mesure in donnees:
        if mesure["jour"]==jour:
            resultat += mesure["chaude"] + mesure["froide"]
    return resultat if resultat>0 else None

def fuite_possible(donnees, jour):
    serie=0
    for mesure in donnees:
        if mesure["jour"]==jour:
            if mesure["heure"]>="00:00" and mesure["heure"]<="05:00":
                if mesure["chaude"] + mesure["froide"]>0 and serie<3:
                    serie+=1
                    if serie>2:
                        return True
                else:
                    serie=0
    return False

Version récursive de la fonction total_conso() :

def total_conso(donnees: list, jour: str):
    # Cas de base : si la liste est vide, on n'a trouvé aucune mesure pour ce jour
    if len(donnees) == 0:
        return None
    a = donnees[0]
    if a['jour'] == jour:
        # Si on trouve une mesure du jour, on l'ajoute et on continue
        reste = total_conso(donnees[1:], jour)
        # Si le reste est None, on retourne juste la mesure courante
        if reste is None:
            return a['chaude'] + a['froide']
        return (a['chaude'Version] + a['froide']) + reste
    # Si la mesure courante n'est pas du jour demandé, on continue
    return total_conso(donnees[1:], jour)
total_conso(donnees, "2025-02-04"),total_conso(donnees, "2025-02-05"),total_conso(donnees, "2025-02-14")

2ème partie

# -----------------------------
# Fonction fournie (corrigée)
# -----------------------------

def lissage_conso(valeurs):
    """
    Calcule une moyenne glissante sur les valeurs.
    Pour chaque valeur, on calcule la moyenne avec ses voisins.
    """
    n=len(valeurs)
    if n<2:               #On s'occupe des cas où valeurs est vide ou contient un seul élément
        return valeurs
    else:
        lisse = []
        for i in range(n):
            if i == 0:
                m = (valeurs[i] + valeurs[i+1]) / 2
            elif i == n - 1:
                m = (valeurs[i-1] + valeurs[i]) / 2
            else:
                m = (valeurs[i-1] + valeurs[i] + valeurs[i+1]) / 3   #Il faut diviser par 3, pas par 2 !
            lisse.append(m)
        return lisse

# -----------------------------
# Espace pour les tests
# -----------------------------

def test_lissage():
    assert lissage_conso([10])==[10]
    assert lissage_conso([10, 20, 33, 40, 50])==[15.0, 21.0, 31.0, 41.0, 45.0]
    assert lissage_conso([10, 2])==[6.0, 6.0]