NSI - Première - Types construits
Travail demandé
Les tableaux ou listes
Dans cette activité, on vous propose de concevoir un logiciel qui traite des données métérologiques. On vous donne ci-dessous un récapitulatif de l'évolution de la température à l'ombre dans la ville de Carpentras le dimanche 19 août 2026 de 8h à 19h.
Question 1
Créer dans votre espace personnel sur le serveur, chemin u:\mesdocuments\devoir\nom_de_votre_prof, un dossier appelé types construits, dans ce dossier :
-
Avec Thonny, Créer un premier module python appelé donnees.py, dans ce module:
Coder un tableau associé à la variable temperatures qui comprend les 12 valeurs de la température du relevé donné ci-dessus.
Le type de donnée de chaque élément du tableau sera int ( nombre entier)Coder un tableau associé à la variable heures qui comprend les 12 heures du relevé ci-dessus.
Le type de donnée de chaque élément du tableau sera int ( nombre entier) -
Avec Thonny, Créer un second module python appelé analyse.py et dans ce nouveau module, ajouter le code suivant puis le tester:
# importation des deux tableaux du module donnees
from donnees import temperatures, heures
# affichage avec formatage du premier élément de chaque tableau:
print( f"à {heures[0]}h il faisait {temperatures[0]}°C ")
Le rendu devrait être:
Copier la ligne de code modifiée dans votre compte rendu comme réponse de la question 1.
Question 2
A 20h il faisait 34 °C à l'ombre le dimanche 19 août 2026, dans le module analyses, écrire le code qui ajoute cette température et cette heure dans le bon tableau ( temperatures ou heures), copier vos lignes de code comme réponse de la question 2 dans votre compte-rendu.
Question 3
Dans le module analyses, en utilisant une boucle "for i in range(...)", écrire le code qui affichera les températures à chaque heure.
Le rendu devrait être:
Copier vos lignes de code comme réponse de la question 3 dans votre compte-rendu.
Question 4
Pour permettre d'afficher les valeurs de températures heure par heure de n'importe quel jour de l'année dont on dispose d'une liste de températures et d'une liste des heures correspondantes, on vous demande de créer la définition d'une fonction appellée affiche_temperature_par_heure(temp,h), la fonction prend deux arguments: le premier argument est la variable temp qui sera associée à un tableau de températures lors de l'exécution; le second argument est la variable h qui sera associée au tableau d'heures correspondantes lors de l'exécution.
- Copier-Coller le code python ( ci-dessous) à compléter dans votre module analyses.
-
Le compléter puis le tester pour le jour correspondant aux données des listes les_temperatures et les_heures. Si votre code est bien écrit vous pouvez aussi le tester sans modifier la définition de la fonction avec les données issues des listes temperatures et heures
-
Copier-Coller votre code python comme réponse de la question 4.
Le code à compléter:
# les données du 16/8/2026
from donnees import temperatures, heures
# les données du 17/8/2026
les_temperatures = [23, 26, 28, 30, 32, 33, 33, 34, 34, 34, 33, 32, 31, 29]
les_heures = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
# définition de la fonction à compléter
def affiche_temperature_par_heure(temp,h):
# à compléter
# Exécutions de la fonction:
# Exécution de la fonction avec les données du 17/8/2026
# A compléter:
affiche_temperature_par_heure(...,...)
# Exécution de la fonction avec les données du 16/8/2026
# A compléter:
affiche_temperature_par_heure(...,...)
Question 5
Vous avez peut être constaté que mettre les données heures et températures dans deux tableaux différents n'est pas pratique lors du traitement. Il est préférable d'avoir pour chaque heure, un n-uplet (heure, temperature) et de mettre tous les n-uplets dans une liste (tableau) . Revoir la notion de n-uplets dans le chapitre Ressources du menu en haut de cette fenêtre si nécessaire. Pour les relévés du 17/08/2026, on aurait la structure suivante:
[(8, 23), (9, 26), (10, 28), (11, 30), ....]
On vous propose de compléter la définition de la fonction liste_de_tuples(temp,h, date) qui prend trois arguments: le premier argument est la variable temp qui sera associée à un tableau de températures lors de l'exécution; le second argument est la variable h qui sera associée au tableau d'heures correspondantes et le troisième argument est la variable date qui sera associée à une chaine de caractères représentant la date du relevé lors de l'exécution de la fonction. La fonction construit une liste de tuples et elle renvoie un n-uplet de deux valeurs : la liste de tuples et la date.
-
Copier-Coller le code python (ci-dessous) à compléter dans votre module analyses.
-
Le compléter et le tester .
-
Copier-Coller votre code python comme réponse de la question 5.
# Définition de la fonction à compléter
def liste_de_tuples(temp, h, date):
liste = []
# on suppose que len(h) == len(temp)
# boucle pour parcourir les tableaux
for i in range(......):
# crée et ajoute le tuple dans la liste
liste.append((....,....))
# après la boucle, renvoyer un n-uplet avec liste et la date
return ......, ......
# exécution de la fonction pour les données du 17/8/2026:
ListeTuples, date = liste_de_tuples(les_temperatures, les_heures, "17/8/2026" )
print(f"voici l'évolution des températures heure par heure le {date}: {ListeTuples}")
Lors de l'exécution de la fonction avec les données du 17/8/2026, le rendu à l'écran sera:
Question 6
Dans cet exercice vous allez observer la notion de muabilité (mutable en Anglais). Un objet est muable (mutable) si on peut modifier son contenu. Prenons un extrait de la liste de n-uplets (tuples) correspondants au 17/8/2026. Cette liste a été recopiée à la main et une erreur a été commise, le troisième tuple aurait dû être (10, 28) et il a été inscrit (11, 30):
ExtraitListeTuples = [(8, 23), (9, 26), (11, 30)]
print(ExtraitListeTuples)
-
Ecrire le code python qui modifie en place (on modifie l'original pas de création de nouvelle liste) l'extrait de liste en remplaçant le troisième tuple actuel par le bon. Vous utiliserez l'indice de l'élément à modifier dans la liste.
-
Afficher l'extrait de liste pour vérifier votre code. Si vous avez pu modifier la liste c'est qu'elle est muable (mutable), c'est le cas des objets de type list
On souhaite maintenant modifier chaque tuple de l'extrait pour qu'il contienne aussi la date. La structure doit devenir:
ExtraitListeTuples= [(8, 23, "17/8/2026"), (9, 26, "17/8/2026"), (11, 30, "17/8/2026")]
- Tester le code ci-dessous qui accède aux éléments de chaque tuple en parcourant la liste:
ExtraitListeTuples = [(8, 23), (9, 26), (10, 28)]
# boucle qui parcourt la liste des tuples
for i in range(len(ExtraitListeTuples)):
# on affiche la valeur de la température de chaque tuple:
print("température = ", ExtraitListeTuples[i][1])
- Expliquer sur votre compte rendu comment on accéde à l'élément température de chaque tuple. Modifier le print pour afficher également l'heure de chaque tuple.
Le rendu devra être:
- Tester maintenant le code ci-dessous, rechercher ce que signifie l'erreur qui se produit puis conclure sur la muabilité des tuples:
# liste d'origine
ExtraitListeTuples = [(8, 23), (9, 26), (10, 28)]
# nouvelle liste avec date
ExtraitListeTuplesDate = []
# boucle pour parcourir les éléments de la liste
for i in range(len(ExtraitListeTuples)):
# on affiche la valeur de la température de chaque tuple:
print("température:", ExtraitListeTuples[i][1])
# on affecte la date comme troisième élément dans chaque tuple
ExtraitListeTuples[i][2]= "17/8/2026"
# on ajoute le nouveau tuple dans la liste
ExtraitListeTuplesDate.append(ExtraitListeTuples[i])
print(ExtraitListeTuplesDate)
- Compléter le code ci-dessous qui corrige le problème:
# liste d'origine
ExtraitListeTuples = [(8, 23), (9, 26), (10, 28)]
# boucle pour parcourir les éléments de la liste
for i in range(len(ExtraitListeTuples)):
# le tuple en position i dans la liste
# vaut l'ancien tuple en position i dans liste
# concaténé avec le tuple ("17/8/2026", )
ExtraitListeTuples[i] = ......
# affichage de la liste
print(ExtraitListeTuples)
-
Expliquez sur votre compte rendu la différence avec la version qui ne fonctionnait pas.
-
Copier-Coller aussi tous vos codes python comme réponse de la question 6.
Question 7
On vous propose maintenant de compléter la fonction temperature_a_heure(liste_tuples, h) cette fonction prend deux arguments, le premier argument est la variable liste_tuples qui sera associée (lors de l'exécution de la fonction) à une liste de tuples correspondants à la journée à analyser, le second argument est la variable h qui sera associée à une heure de la journée, la fonction renverra la température à l'heure h si cette valeur existe, sinon elle renverra None.
# liste d'origine volontairement incomplète
ExtraitListeTuples = [(8, 23), (9, 26), (10, 28)]
# définition de la fonction à compléter
def temperature_a_heure(liste_tuple, h):
for i in range(len(liste_tuple)):
if liste_tuple[i][....] == h:
return .....
# si on a terminé la boucle sans correspondance d'heure
# il n'y a pas relevé et on renvoie None
return None
# Exécution de la fonction
heure = int(input ("Entrer une heure: \n"))
temperature = temperature_a_heure(ExtraitListeTuples, heure)
if temperature != None:
print(f"la température à {heure} h était de {temperature} °C" )
else:
print(f"Désolé aucune température n'a été enregistrée à {heure} h")

-
Copier-Coller le code python à compléter dans votre module analyses.
-
Le compléter et le tester .
-
Copier-Coller votre code python comme réponse de la question 7.
Question 8
La structure de données liste de tuples a permis de rassembler les données issues des deux listes initiales temperatures et heures en une seule mais elle n'est guère pratique à manipuler, si on veut afficher la température à 21h il faut parcourir tous les tuples de la liste jusqu'à atteindre cette heure, on ne peut pas avoir accès directement à la valeur sauf à connaitre l'indice dans la liste du tuple qui correspond à 21h. On vous propose de remplacer la liste de tuples par un objet dictionnaire ( revoir le principe des dictionnaires dans le chapitre Ressources du menu en haut de cette fenêtre si nécessaire).
Voici un extrait d'un dictionnaire possible pour les données du 17/8/2026: les clés sont des chaines de caractères qui représenent les heures et la valeur associée à une clé sera la température à cette heure.
dico_temperatures_heures_date = {"8": 23, "9": 26, "10": 28, etc... }
- Coder l'objet dictionnaire {"8": 23, "9": 26, "10": 28} et l'assigner à la variable dico_temperatures_heures_date.
-
Ecrire le code qui ajoute une paire clé:valeur dans le dictionnaire, cette paire sera la clé "date" avec la valeur "17/8/2026".
-
Compléter la définition de la fonction construit_dictionnaire(liste_tuples, date ) qui prend deux arguments: une liste de tuples et une date, la fonction renvoie le dictionnaire complet pour la date choisie.
# les données du 16/8/2026
from donnees import temperatures, heures
# les données du 17/8/2026
les_temperatures = [23, 26, 28, 30, 32, 33, 33, 34, 34, 34, 33, 32, 31, 29]
les_heures = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
# Définition de la fonction liste_de_tuple complété question 5
def liste_de_tuples(temp, h, date):
liste = []
# on suppose que len(h) == len(temp)
# boucle pour parcourir les tableaux
for i in range(......):
# crée et ajoute le tuple dans la liste
liste.append((....,....))
# après la boucle, renvoyer un n-uplet avec liste et la date
return ......, ......
# Définition de la fonction construit_dictionnaire(liste_tuples, date )
def construit_dictionnaire(liste_tuples, date ):
# dictionnaire (au départ vide)
dico = {}
# ajout paire clé et valeur de date
dico ['date'] = date
# parcours liste de tuples
for i in range(len(liste_tuples):
# la variable cle est une chaine obtenue avec la
# partie heure du tuple en position i dans la liste
cle = str(liste_tuples[i][0])
# la valeur associée à la clé est la partie
# température du tuple en position i dans la liste
dico [cle] = liste_tuples[...][...]
# après boucle: renvoyer le dictionnaire
return .....
# exécution de la fonction pour les données du 17/8/2026:
ListeTuples, date = liste_de_tuples(les_temperatures, les_heures, "17/8/2026" )
le_dictionnaire = construit_dictionnaire(ListeTuples, date )
print("voici le dictionnaire:", le_dictionnaire )
# exécution de la fonction pour les données du 16/8/2026:
ListeTuples, date = liste_de_tuples(temperatures, heures, "16/8/2026" )
le_dictionnaire = construit_dictionnaire(ListeTuples, date )
print("voici le dictionnaire créé:", le_dictionnaire )
Voici le résultat attendu pour le 17/8/2026:

- Copier-Coller votre code python comme réponse de la question 8.
Question 9
On vous demande de coder la définition de la fonction affiche_donnees_dictionnaire(dico) qui prend en argument une variable dico qui sera associée à un dictionnaire lors de l'exécution. Lors de l'exécution, la fonction affiche les données extraites du dictionnaire et doit les afficher selon le format suivant:

def affiche_donnees_dictionnaire(dico):
print(f"Le {dico['date']}:")
# à compléter
# exécution de la fonction pour les données du 17/8/2026:
ListeTuples, date = liste_de_tuples(les_temperatures, les_heures, "17/8/2026" )
# Création du dictionnaire
le_dictionnaire = construit_dictionnaire(ListeTuples, date )
# Affichage des données du dictionnaire en utilisation la fonction
affiche_donnees_dictionnaire(le_dictionnaire)