Sujet n° 16 · Session 2026 · 1 heure
Les bandes du réchauffement climatique
Les « warming stripes » résument 175 ans de températures mondiales en bandes de couleur. Le candidat cherche un écart par année, trouve la dernière année froide, corrige une moyenne au signe inversé, puis trace les bandes.
- Liste de dictionnaires
- Recherche séquentielle
- Tests
- Débogage
- Graphique matplotlib
Mise en situationLes données
Conçues par le climatologue Ed Hawkins en 2018, les warming stripes représentent l'évolution des températures par rapport à une moyenne historique. Le fichier datas.csv, issu de l'agence américaine d'observation océanique et atmosphérique (NOAA), contient les écarts de température mondiale par rapport à la moyenne du XXe siècle (1901-2000), pour chaque année de 1851 à 2025. La ligne 2020,1.01 signifie qu'en 2020 la température moyenne mondiale était supérieure de 1,01 °C à la moyenne de référence.

La fonction charger(fichier) lit ce fichier et renvoie une liste de dictionnaires, un par année, avec les clés 'année' (entier) et 'écart' (flottant).
Toutes les cellules de cette page partagent le même Python, comme un notebook : une fonction écrite à une question sert aux suivantes. Maj + Entrée exécute la cellule.
Question 1L'écart d'une année
Écrire la fonction ecart_temperature(datas, annee) qui prend en paramètres la liste des données et une année cible. Elle doit renvoyer l'écart de température correspondant à cette année, ou None si l'année n'est pas présente dans les données.
Rédiger ensuite un jeu de tests (via des assertions) permettant de vérifier le bon fonctionnement de votre fonction, y compris pour une année hors du jeu de données.
Appel professeur
À demander au candidat
- Votre fonction parcourt-elle toute la liste quand l'année est trouvée tôt ? Pourquoi
returndans la boucle suffit-il ? - Où placez-vous le
return None? Que se passerait-il s'il était dans la boucle ? - Quels cas vos assertions couvrent-elles ?
Le return None se place après la boucle, une fois toutes les années examinées.
Résultats attendus
- 2020
- 1,01 °C
- 1800
None
Question 2La dernière année plus froide
En utilisant la fonction derniere_annee_ecart_negatif (déjà fournie et qui utilise votre fonction), déterminer quelle a été la dernière année où la température mondiale était inférieure à la moyenne de référence.
Appel professeur
À demander au candidat
- Décrivez la boucle
whiledederniere_annee_ecart_negatif: d'où part-elle, et quand s'arrête-t-elle ? - Que se passerait-il si aucune année n'avait un écart négatif ?
Si ecart_temperature renvoyait None pour une année absente, la comparaison ecart >= 0 lèverait une erreur : la fonction suppose des années consécutives.
Résultats attendus
- Dernière année sous la moyenne
- 1977
Question 3Une prévision absurde
La fonction prevision(datas, annee, n), dont le code est fourni, effectue une régression linéaire sur les n dernières années pour estimer l'écart de température d'une année future : elle calcule une droite proche des points des n dernières années et renvoie l'ordonnée du point de cette droite dont l'abscisse est l'année cible.
En exécutant prevision(datas_temperature, 2040, 20), le résultat obtenu semble absurde compte tenu du réchauffement actuel. Cette absurdité provient d'une erreur de logique qui s'est glissée dans la fonction annexe moyenne_ecarts. Analyser le code de cette fonction, identifier l'erreur, et la corriger. Que devient alors la prévision pour 2040 ?
Appel professeur
À demander au candidat
- Pourquoi une prévision négative pour 2040 est-elle absurde au vu des données ?
- Comment avez-vous localisé l'erreur dans
moyenne_ecarts? Quel test simple l'aurait révélée ?
Un signe : somme - dico['écart'] au lieu de +. La moyenne sur 2006-2025 vaut alors −0,84 au lieu de +0,84.
Résultats attendus
- Prévision 2040, code fourni
- −0,11 °C
- Prévision 2040, corrigé
- +1,57 °C
Question 4Tracer les bandes
On souhaite générer la représentation graphique des warming stripes. Dans la fonction graphique(datas), le code pour gérer les couleurs (du bleu pour le froid au rouge pour le chaud) est déjà préparé. Compléter le code de la fonction en générant les listes annees (pour l'axe des abscisses) et ordonnees. Pour obtenir des bandes colorées de hauteur uniforme couvrant tout le graphique, la liste ordonnees devra contenir la valeur 1 pour chaque année traitée.
Appel professeur
À demander au candidat
- Pourquoi toutes les ordonnées valent-elles 1 ? Qu'est-ce qui porte l'information dans ce graphique ?
- Les listes
annees,ordonneesettemperaturesdoivent avoir la même longueur. Pourquoi ?
Les trois listes sont construites à partir de datas, dans le même ordre.
Le fichier du candidat
Le jour de l'épreuve, le candidat travaille dans un seul fichier. Ce bouton rassemble vos cellules dans l'ordre, telles qu'elles sont à l'écran, en un warming_stripes.py à ouvrir dans votre éditeur habituel.