Sujet n° 13 · Session 2026 · 1 heure
Un ballon-sonde dans l'atmosphère
Des relevés de ballon-sonde donnent altitude, température en kelvins et position. Le candidat convertit les températures, cherche la couche la plus froide, puis répare un fichier KML de cartographie mal fermé.
- Fichier CSV
- Listes
- Minimum et indices
- Assertions
- Écriture de fichier
Mise en situationLes relevés
Le fichier releves_ballon_sonde.csv contient des données de Météo France obtenues par ballon-sonde : altitude en mètres, température en kelvins, longitude et latitude, relevées pendant la montée. Le séparateur est le point-virgule et la première ligne contient les en-têtes.
Le script exploite ces données pour convertir les températures dans une unité plus courante, rechercher la plus basse température et la ou les altitudes correspondantes, et générer un fichier KML (Keyhole Markup Language) lisible par de nombreuses applications de cartographie.
| Altitude_m | Temperature_K | Longitude | Latitude |
|---|---|---|---|
| 0 | 288.15 | 4.760467 | 45.602117 |
| 200 | 286.85 | 4.760467 | 45.602167 |
Les deux premiers relevés.
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.
Pour l'examinateur
Le fichier KML s'écrit dans le dossier courant : copier le dossier du sujet sur le bureau évite les problèmes de droits d'écriture.
Question 1Récupérer les données
On donne une première fonction Python recupere_donnees_fichier_csv(nom_fichier) qui permet d'ouvrir le fichier csv, de supprimer les en-têtes et de récupérer les données relevées sous forme de 4 listes.
En utilisant cette fonction recupere_donnees_fichier_csv, écrire la ou les lignes de code qui récupèrent les données relevées par le ballon sonde dans 4 listes différentes (altitudes, temperatures, longitudes et latitudes).
Appel professeur
À demander au candidat
- La fonction renvoie quatre listes d'un coup. Quel est le type exact de ce qu'elle renvoie ?
- Pourquoi
readline()est-il appelé une fois avant la boucle ?
Une seule ligne suffit : l'affectation multiple déballe le quadruplet renvoyé.
Résultats attendus
- Nombre de relevés
- 20
Question 2Des kelvins aux degrés Celsius
La température en kelvins correspond à la température en degrés Celsius à laquelle on ajoute la valeur 273,15.
Écrire en Python une fonction nommée conversion_K_en_C qui prend en paramètre une liste de températures en kelvins (K) et retourne cette même liste de températures, mais converties en degrés Celsius (°C). Les valeurs de températures doivent être arrondies à 1 chiffre après la virgule (commande utilisable : round(valeur, nb chiffres après la virgule)). Écrire une ligne de code permettant de tester la fonction proposée.
Appel professeur
À demander au candidat
- Votre fonction modifie-t-elle la liste reçue ou en construit-elle une nouvelle ? Que devient
temperaturesaprès l'appel ? - Pourquoi arrondir avec
round(valeur, 1)? Que donnerait288.15 - 273.15sans arrondi ?
Si la fonction modifie la liste en place, l'exécuter deux fois sur temperatures convertit deux fois : passer une copie (list(temperatures)) ou construire une nouvelle liste.
Résultats attendus
[273.15, 300.0][0.0, 26.9]
Question 3La couche la plus froide
On souhaite disposer d'une fonction nommée altitude_la_plus_froide qui prend en paramètres une liste d'altitudes, ainsi qu'une liste des températures en degrés Celsius. Cette fonction doit renvoyer la température la plus froide, ainsi qu'une liste contenant la ou les altitudes correspondantes. Par exemple :
>>> altitude_la_plus_froide([7000, 10125, 13896, 14211], [-35.2, -52.1, -57.4, -57.4])
(-57.4, [13896, 14211])
>>> altitude_la_plus_froide([6000, 7250, 11542, 15214, 17300], [-33.7, -45, -53, -58.5, -60.1])
(-60.1, [17300])
Proposer une écriture de la fonction altitude_la_plus_froide.
Appel professeur
À demander au candidat
- Pourquoi initialiser le minimum avec
liste_temperatures[0]plutôt qu'avec 0 ? - Votre fonction parcourt-elle les listes une ou deux fois ? Pourrait-on n'en faire qu'un passage ?
- Que se passe-t-il si les deux listes n'ont pas la même longueur ?
Initialiser le minimum à 0 est faux dès que toutes les températures sont négatives.
Plusieurs altitudes peuvent partager le minimum : il faut toutes les garder.
Résultats attendus
- Relevés du fichier
- −56,5 °C à 15 120 m et 17 210 m
Question 4Une assertion de sécurité
On donne une deuxième fonction Python genere_kml qui prend en paramètres 2 listes (liste_longitudes et liste_latitudes), qui sont les données relevées de géolocalisation du ballon sonde, et les utilise pour générer un fichier d'extension kml. Ce format normalisé kml utilise des balises ouvrantes et fermantes.
Observer le corps de la fonction genere_kml, puis, à l'aide d'une assertion, insérer une ligne de code qui garantit que les deux listes liste_longitudes et liste_latitudes sont de même longueur.
Appel professeur
À demander au candidat
- À quel endroit de la fonction placer l'assertion, et pourquoi pas après la boucle ?
- Que se passe-t-il à l'exécution quand l'assertion est fausse ? Quel message obtient-on ?
L'assertion doit être vérifiée avant d'ouvrir le fichier, sinon un fichier incomplet est créé.
Question 5Générer le fichier KML
Écrire une ligne de code qui appelle la fonction genere_kml avec les deux listes de longitudes et latitudes obtenues à la question 1, puis ouvrir le fichier kml généré dans le même répertoire que le fichier Python.
Appel professeur
À demander au candidat
- Le mode
'w'écrase-t-il un fichier existant ? Quel mode faudrait-il pour ajouter à la fin ?
Question 6Fermer la balise
Après analyse, il s'avère que ce fichier kml généré pose des problèmes de compatibilité avec certains logiciels de cartographie. En effet, la balise kml n'a pas été fermée en toute fin de fichier (</kml> absente). Proposer une amélioration du code visant à répondre à cette difficulté. La fonction genere_kml se trouve à la question 4.
Appel professeur
À demander au candidat
- Pourquoi un logiciel de cartographie refuse-t-il un fichier dont la balise
kmln'est pas fermée ? - Où ajouter
</kml>: dans la boucle, ou après ? Pourquoi ?
La balise fermante s'écrit une seule fois, après </Document>.
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 etude_climatique.py à ouvrir dans votre éditeur habituel.