Université Mohammed V M.2.3.3.
Programmation Python pour l'IA
ENSIAS Responsable du Module : Pr RACHAD
Année universitaire 2025-2026
TP2 : Les structures de données Python
Exercice 1 :
On considère une liste non vide 𝐿 = [𝑥! , 𝑥" , … , 𝑥# ]de nombres réels.
Dans cet exercice, on souhaite développer un petit module Python permettant de calculer des indicateurs
statistiques de base, très utilisés en prétraitement de données en intelligence artificielle.
Question 1 : Écrire une fonction maximum(L) qui retourne la valeur maximale d’une liste de
nombres, sans utiliser la fonction prédéfinie max().
Question 2 : Écrire une fonction minimum(L) qui retourne la valeur minimale d’une liste de
nombres, sans utiliser la fonction prédéfinie min().
Question 3 : Écrire une fonction moyenne(L) qui retourne la moyenne arithmétique des
éléments de la liste 𝐿, sans utiliser sum().
"
1
𝑥¯ = ' 𝑥!
𝑛
!#$
Question 4 : Écrire une fonction mediane(L) qui retourne la médiane de la liste :
• si la taille de la liste est impaire, la médiane est la valeur centrale ;
• si la taille est paire, la médiane est la moyenne des deux valeurs centrales.
Indication : utiliser une copie triée de la liste avec sorted(L) plutôt que [Link]() afin de ne pas
modifier la liste originale.
Question 5 : Écrire une fonction variance(L) qui retourne la variance de la liste :
"
1
𝑉 = '( 𝑥! − 𝑥¯)%
𝑛
!#$
Question 6 : Écrire une fonction ecart_type(L) qui retourne l’écart type de la liste :
𝜎 = √𝑉
Question 7 : Écrire une fonction etendue(L) qui retourne l’étendue de la série :
eˊ tendue = max(𝐿) − min(𝐿)
Question 8 : Écrire une fonction resume_statistique(L) qui retourne, sous forme de
dictionnaire, les informations suivantes :minimum ; maximum ; moyenne ; médiane ; variance
; écart type ; étendue.
1
Université Mohammed V M.2.3.3. Programmation Python pour l'IA
ENSIAS Responsable du Module : Pr RACHAD
Année universitaire 2025-2026
Exercice 2 :
Dans cet exercice, on désire de manipuler des données météorologiques sous formes de
dictionnaires. On se limite pour le moment à un seul dictionnaire comportant les données
météorologiques qui concernent le mois de janvier.
Les clés du dictionnaire sont les jour du mois et les valeurs correspondent à des sous
dictionnaires contenant la température, l'humidité, les précipitations, et les vitesse du vent.
• Data[1] correspond à un dictionnaire comportant les données enregistrées pendant le
premier jour de janvier
• Data[1]["temperature"] correspond à la température enregistrée le 01 janvier
• Data[1]["humidite"] correspond à l’humidité enregistrée le 01 janvier
• Data[1] ["precipitations"] correspond au taux de précipitations enregistrées le 01 janvier
• Data[1] ["vent"] correspond à la vitesse du vent enregistrées le 01 janvier
• …
Nous considérons le code ci-dessous pour la génération des données d’une façons aléatoire pour
le mois de janvier :
import random
data = {
jour: {
" temperature ": [Link](0, 40), # Température entre 0 et 40°C
"humidite": [Link](40, 90), # Humidité entre 40% et 90%
"precipitations": [Link](0, 20) # Précipitations entre 0 et 20 mm
"vent": [Link](0, 100) # Vitesse du vent entre 0 et 100 km/h
}
for jour in range(1, 31)
}
Question 1 : Écrire une fonction temperatures_uniques(data) qui retourne les températures
uniques enregistrées pendant ce mois. Pour ce faire, vous vous basez sur une structure de type
set (ensemble)
Question 2 : Écrire une fonction jour_pluvieux(data) qui retourne la liste des jours pluvieux
(précipitations > 0).
Question 3 : Écrire une fonction jours_extrems(data) qui retourne la liste des jours avec des
températures extrêmes ( <5°C ou >35°C).
Question 4 : Écrire une fonction temperature_moyenne(data) qui retourne la température
moyenne du mois.
2
Université Mohammed V M.2.3.3. Programmation Python pour l'IA
ENSIAS Responsable du Module : Pr RACHAD
Année universitaire 2025-2026
Maintenant, nous souhaitons identifier les meilleurs et les pires jours du mois en nous basant
sur des scores que nous attribuons à chaque jour du mois, selon les critères cités dans le tableau
ci-dessous :
Critère Plage de valeurs Points attribués
Température 18-28°C 40
10-18°C ou 28-32°C 30
<10°C ou >32°C 10
Humidité 40-70% 20
30-40% ou 70-80% 10
<30% ou >80% 5
Précipitations 0-2 mm 20
2-10 mm 10
>10 mm 0
Vent 0-30 km/h 20
30-60 km/h 10
>60 km/h 0
Question 5 : Écrire une fonction score(data) qui retourne une liste de tuples où la première
composante du tuple correspond au jour du mois et la deuxième composante correspond à son
score
Question 6 : Déduire le meilleur et le pire des jours du mois