đ Graphiques, List, Set
- Liste (list)
- For (séquence)
- Compréhension de liste
- Matplotlib
- Ensemble (set)
- Activités
Jusqu'ici nous avons vu les 4 types de données de base en Python :
- les entiers (
int) : 5, -3, 42, 0, ... - les nombres Ă virgule (
float) : 3.14, -0.001, 2.0, ... - les chaĂźnes de caractĂšres (
str) : "Bonjour", 'a', "123", ... - les booléens (
bool) :True,False
Mais Python propose aussi des types de données plus complexes, comme les listes, les tuples, les ensembles et les dictionnaires.
Nous allons commencer par les listes.
Une liste est une collection ordonnĂ©e et modifiable d'Ă©lĂ©ments, qui peuvent ĂȘtre de n'importe quel type de donnĂ©es.
Les listes sont définies par des crochets [], avec les éléments séparés par des virgules.
Par exemple :
ma_liste = [1, 2, 3, 4, 5]
noms = ["Alice", "Bob", "Charlie"]
mixte = [1, "deux", 3.0, True]
On peut accéder aux éléments d'une liste en utilisant leur index, qui commence à 0.
Par exemple, pour accéder au premier élément de ma_liste, on écrit ma_liste[0] :
print(ma_liste[0]) # Affiche 1
print(noms[1]) # Affiche "Bob"
print(mixte[2]) # Affiche 3.0
On peut aussi utiliser des indices négatifs pour accéder aux éléments en partant de la fin de la liste :
print(ma_liste[-1]) # Affiche 5 (dernier élément)
print(noms[-2]) # Affiche "Bob" (avant-dernier élément)
print(mixte[-3]) # Affiche "deux" (troisiÚme élément en partant de la fin)
On peut aussi utiliser la notation de tranche (slicing) pour accéder à une sous-liste :
print(ma_liste[1:4]) # Affiche [2, 3, 4] (éléments d'index 1 à 3)
print(noms[:2]) # Affiche ["Alice", "Bob"] (2 premiers éléments)
print(mixte[2:]) # Affiche [3.0, True] (Ă partir de l'index 2 jusqu'Ă la fin)
On peut modifier les éléments d'une liste en utilisant leur index et en leur assignant une nouvelle valeur :
ma_liste[0] = 10
print(ma_liste) # Affiche [10, 2, 3, 4, 5]
On peut ajouter des éléments à une liste en utilisant la méthode append() pour ajouter un élément à la fin de la liste :
ma_liste.append(6)
print(ma_liste) # Affiche [10, 2, 3, 4, 5, 6]
Ou la méthode insert() pour insérer un élément à une position spécifique :
ma_liste.insert(1, 15) # InsĂšre 15 Ă l'index 1
print(ma_liste) # Affiche [10, 15, 2, 3, 4, 5, 6]
On peut supprimer des éléments en utilisant la méthode remove() pour supprimer la premiÚre occurrence d'une valeur spécifique :
ma_liste.remove(15)
print(ma_liste) # Affiche [10, 2, 3, 4, 5, 6]
Ou la méthode pop() pour supprimer un élément à une position spécifique (par défaut, le dernier élément) et le retourner :
dernier = ma_liste.pop()
print(dernier) # Affiche 6
print(ma_liste) # Affiche [10, 2, 3, 4, 5]
Une méthode est simplement une fonction rattachée à un type de données en particulier.
Pour appeler une méthode, la syntaxe est légÚrement différente, il faut toujours précéder l'appel du nom de la variable :
maVariable.maMethode()
maVariable.maMethode(parametre1)
Les méthodes disponibles vont varier selon le type de la variable.
Par exemple, voici des exemples de méthodes propres aux chaßnes de caractÚres :
# Exemples de méthodes existantes sur des strings
texte = "python est génial "
print(texte.upper()) # "PYTHON EST GĂNIAL "
print(texte.capitalize()) # "Python est génial "
print(texte.strip()) # "python est génial"
print(texte.strip().upper()) # "PYTHON EST GĂNIAL"
print(texte.replace("génial", "adorable")) # "python est adorable "
On peut obtenir la longueur d'une liste (le nombre d'éléments qu'elle contient) en utilisant la fonction intégrée len() :
print(len(ma_liste)) # Affiche 5
On peut vérifier si un élément est présent dans une liste en utilisant l'opérateur in :
if 3 in ma_liste:
print("3 est dans la liste")
else:
print("3 n'est pas dans la liste")
3 in ma_liste est une expression booléenne qui renvoie True si 3 est dans ma_liste, sinon False.
Les listes en Python sont ordonnées, ce qui signifie que les éléments conservent leur ordre d'insertion.
On peut utiliser la fonction sorted() pour obtenir une nouvelle liste triée sans modifier l'originale :
liste_triee = sorted(ma_liste)
print(liste_triee) # Affiche [2, 3, 4, 5, 10]
print(ma_liste) # Affiche [10, 2, 3, 4, 5] (originale non modifiée)
On peut aussi trier une liste en utilisant la méthode sort() pour trier la liste en place (modifie la liste originale) :
ma_liste.sort()
print(ma_liste) # Affiche [2, 3, 4, 5, 10]
On peut trier dans l'ordre décroissant en passant le paramÚtre reverse=True :
noms.sort(reverse=True)
print(noms) # Affiche ['Charlie', 'Bob', 'Alice']
Dans cet exemple, la liste noms est triée en ordre alphabétique décroissant, car les chaßnes de caractÚres sont comparées selon l'ordre lexicographique.
Si on fait :
liste1 = [1, 2, 3]
liste2 = liste1
alors liste2 n'est pas une copie de liste1, mais une autre rĂ©fĂ©rence vers la mĂȘme liste.
Donc si on modifie liste2, liste1 est aussi modifiée :
liste2.append(4)
print(liste1) # Affiche [1, 2, 3, 4]
Pour faire une vraie copie, on peut utiliser la méthode copy() :
liste1 = [1, 2, 3]
liste2 = liste1.copy()
liste2.append(4)
print(liste1) # Affiche [1, 2, 3]
print(liste2) # Affiche [1, 2, 3, 4]
On peut concaténer deux listes en utilisant l'opérateur + :
liste1 = [1, 2, 3]
liste2 = [3, 4, 5, 6]
liste3 = liste1 + liste2
print(liste3) # Affiche [1, 2, 3, 3, 4, 5, 6]
On peut aussi répéter une liste en utilisant l'opérateur * :
liste = [1, 2, 3]
liste_repetee = liste * 3
print(liste_repetee) # Affiche [1, 2, 3, 1, 2, 3, 1, 2, 3]
Vous l'aurez peut-ĂȘtre devinĂ©, on peut mĂȘme avoir des listes de listes :
liste_de_listes = [[1, 2, 3], ["a", "b", "c"], [True, False]]
print(liste_de_listes[0]) # Affiche [1, 2, 3]
print(liste_de_listes[1][1]) # Affiche "b"
Une boucle for peut aussi ĂȘtre utilisĂ©e pour itĂ©rer directement sur les Ă©lĂ©ments d'une liste (ou d'autres collections comme les tuples, ensembles, dictionnaires, etc.).
La syntaxe est la suivante :
for element in liste:
# instructions à exécuter
Voici un exemple simple d'utilisation de for pour parcourir une liste de noms et les afficher :
noms = ["Alice", "Bob", "Charlie"]
for nom in noms:
print("Bonjour", nom)
Dans cet exemple, la boucle for parcourt chaque élément de la liste noms et l'affecte à la variable nom à chaque itération.
Ensuite, elle exécute l'instruction print() pour afficher un message de bienvenue pour chaque nom.
Exécutez ce code en mode débogage pour bien comprendre son fonctionnement.
Mettez un point d'arrĂȘt sur la ligne 2 et avancez une ligne Ă la fois pour suivre l'Ă©volution de la variable nom.
On peut réécrire la boucle for ci-dessus en utilisant une boucle while ou une boucle for avec la fonction range() comme suit :
Boucle whileâ
noms = ["Alice", "Bob", "Charlie"]
i = 0
while i < len(noms):
nom = noms[i]
print("Bonjour", nom)
i += 1
Boucle for avec range()â
noms = ["Alice", "Bob", "Charlie"]
for i in range(len(noms)):
nom = noms[i]
print("Bonjour", nom)
Remarquez que dans ces deux versions, nous utilisons la fonction len() pour obtenir la longueur de la liste noms et nous accédons aux éléments de la liste en utilisant leur index ([i]).
Cependant, la version avec la boucle for nom in noms est plus concise et plus facile Ă lire.
- Selon le contexte, une boucle
forsur une liste peut ĂȘtre plus efficace et plus claire qu'une bouclewhileou une boucleforavecrange(), surtout lorsque l'on n'a pas besoin de l'index des Ă©lĂ©ments. - Mais parfois, on a besoin de l'index pour certaines opĂ©rations.
- Aussi, la boucle
whileoffre plus de flexibilitĂ© pour des conditions d'arrĂȘt plus complexes.
Voici un autre exemple qui utilise une boucle for pour créer une nouvelle liste contenant les carrés des nombres d'une liste initiale :
nombres = [1, 2, 3, 4, 5]
carres = []
for nombre in nombres:
carres.append(nombre ** 2) # Ajoute le carré du nombre à la liste carres
print("Les carrés des nombres sont :", carres)
Dans cet exemple, la boucle for parcourt chaque nombre dans la liste nombres, calcule son carré (nombre ** 2) et l'ajoute à la liste carres en utilisant la méthode append().
Exécutez-le en mode débogage pour suivre l'évolution des listes nombres et carres à chaque itération.
Parfois, on a besoin à la fois de l'index et de la valeur des éléments lors de l'itération sur une liste.
Dans ce cas, on peut utiliser la fonction intégrée enumerate(), qui renvoie à la fois l'index et la valeur de chaque élément.
Voici comment l'utiliser :
noms = ["Alice", "Bob", "Charlie"]
for index, nom in enumerate(noms):
print(f"Index {index} : Bonjour {nom}")
Dans cet exemple, enumerate(noms) renvoie des paires (index, nom) pour chaque Ă©lĂ©ment de la liste noms, oĂč index est l'index de l'Ă©lĂ©ment et nom est la valeur de l'Ă©lĂ©ment.
Exécutez-le en mode débogage pour suivre l'évolution des variables index et nom à chaque itération.
La compréhension de liste est une maniÚre concise et élégante de créer des listes en Python. Elle permet de générer une nouvelle liste en appliquant une expression à chaque élément d'une séquence (comme une liste, un tuple, etc.) et en option, en filtrant les éléments selon une condition.
La syntaxe générale de la compréhension de liste est la suivante :
nouvelle_liste = [expression for element in sequence if condition]
expression: l'opération ou la transformation à appliquer à chaque élément.element: la variable qui prend chaque valeur de la séquence.sequence: la séquence (comme une liste) que l'on parcourt.condition(optionnelle) : une condition pour filtrer les éléments.
Voici un exemple simple pour créer une liste des carrés des nombres pairs d'une liste initiale :
nombres = [1, 2, 3, 4, 5, 6]
carres_pairs = [x ** 2 for x in nombres if x % 2 == 0]
print(carres_pairs) # Affiche [4, 16, 36]
Dans cet exemple :
- Nous parcourons chaque nombre
xdans la listenombres. - Nous calculons le carré de
x(x ** 2) uniquement sixest pair (if x % 2 == 0). - Le résultat est une nouvelle liste
carres_pairscontenant les carrés des nombres pairs.
Exécutez ce code en mode débogage pour bien comprendre son fonctionnement.
Mettez un point d'arrĂȘt sur la ligne 2 et avancez une ligne Ă la fois pour suivre l'Ă©volution de la variable x et de la liste carres_pairs.
- Concision : La comprĂ©hension de liste permet d'Ă©crire moins de lignes de code pour accomplir la mĂȘme tĂąche.
- Lisibilité : Elle rend le code plus lisible en exprimant clairement l'intention de créer une nouvelle liste basée sur une transformation ou un filtrage.
- Performance : La compréhension de liste est souvent plus rapide que l'utilisation de boucles
fortraditionnelles pour créer des listes.
Vous l'aurez peut-ĂȘtre devinĂ©, on peut mĂȘme avoir des comprĂ©hensions de liste imbriquĂ©es (nested list comprehensions) :
liste = [[j for j in range(i)] for i in range(5)]
print(liste) # Affiche [[ ], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
Matplotlib est une bibliothÚque de visualisation de données en Python qui permet de créer des graphiques statiques, animés et interactifs. Elle est largement utilisée pour l'analyse de données, la science des données et l'apprentissage-machine (machine learning).
N'hésitez pas à consulter la documentation officielle de Matplotlib pour plus de détails et d'exemples.
Afin de pouvoir utiliser Matplotlib dans un projet, il faut d'abord installer la bibliothĂšque Matplotlib dans votre projet.
Matplotlib est une bibliothĂšque qui contient plusieurs modules.
Le module le plus couramment utilisé pour créer des graphiques est pyplot.
Pour l'importer dans un script, on utilise la commande suivante :
import matplotlib.pyplot as plt
Ici, nous importons le module pyplot de Matplotlib et lui donnons l'alias plt pour simplifier son utilisation dans le code.
Nous pourrons ainsi appeler les fonctions du module pyplot en utilisant le préfixe plt.
Par exemple :
plt.plot(x, y) # Pour tracer un graphique
plt.show() # Pour afficher le graphique
qui est plus court et lisible que :
matplotlib.pyplot.plot(x, y)
matplotlib.pyplot.show()
Créons d'abord un graphique trÚs simple, avec 3 points :
import matplotlib.pyplot as plt
# Données à tracer
x = [-100, 0, 100] # Liste des abscisses (x) des 3 points
y = [10000, 0, 10000] # Liste des ordonnées (y) des 3 points
# Tracer les points (-100, 10000), (0, 0) et (100, 10000)
plt.plot(x, y)
# Afficher le graphique
plt.show()
Exécutez ce code pour voir le résultat.

La fonction plt.plot(x, y) trace les points définis par les listes x et y.
Elle nĂ©cessite qu'on lui fournisse deux listes de mĂȘme longueur : une pour les abscisses (x) et une pour les ordonnĂ©es (y).
Mais elle peut aussi prendre des paramĂštres optionnels pour personnaliser le graphique, comme la couleur, le style de ligne, les marqueurs, etc.
Nous allons en voir quelques-uns. Commençons par leurs valeurs par défaut :
import matplotlib.pyplot as plt
# Données à tracer
x = [-100, 0, 100]
y = [10000, 0, 10000]
# Tracer les points
plt.plot(
x, y,
color = 'C0', # couleur
linestyle = '-', # type de ligne
marker = None, # type de point
linewidth = 1.5, # épaisseur de la ligne
markersize = 6, # taille des marqueurs
alpha = 1.0, # opacité (0.0 - 1.0)
label = None # étiquette pour la légende
)
plt.show()

Le rĂ©sultat est le mĂȘme qu'avec plt.plot(x, y), car les paramĂštres que nous avons spĂ©cifiĂ©s sont les valeurs par dĂ©faut.
Changeons quelques paramĂštres pour voir leur effet :
import matplotlib.pyplot as plt
x = [-100, 0, 100]
y = [10000, 0, 10000]
plt.plot(
x, y,
color = 'darkorange', # orange foncé
linestyle = '', # pas de ligne
marker = 'o', # cercle pour les points
markersize = 16 # points plus gros
)
plt.show()

Ajoutons maintenant plus de points pour obtenir une courbe de :
import matplotlib.pyplot as plt
# Données à tracer
x = [i for i in range(-100, 101)] # Entiers de -100 Ă 100
y = [i ** 2 for i in x] # Carrés des entiers
plt.plot(x, y)
plt.show()
On obtient une belle parabole.

On peut appeler plusieurs fois plt.plot() pour ajouter plusieurs Ă©lĂ©ments sur le mĂȘme graphique.
Par exemple, affichons en orange foncĂ© les points oĂč x est un multiple de 10 :
- Le premier appel Ă
plt.plot()dessine les lignes. - Puis un deuxiĂšme appel Ă
plt.plot()dessine les points en orange avec une opacité de 0.75.
import matplotlib.pyplot as plt
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
# Points oranges pour les x multiples de 10
x_orange = [i for i in x if i % 10 == 0]
y_orange = [i ** 2 for i in x_orange]
# les lignes :
plt.plot(x, y)
# les points :
plt.plot(
x_orange, y_orange,
color = 'darkorange',
linestyle = '', # pas de ligne
marker = 'o',
markersize = 12,
alpha = 0.75
)
plt.show()

Ajoutons maintenant la courbe miroir en vert pour :
import matplotlib.pyplot as plt
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
y_miroir = [-i for i in y] # miroir de y
x_orange = [i for i in x if i % 10 == 0]
y_orange = [i ** 2 for i in x_orange]
plt.plot(x, y)
plt.plot(
x_orange, y_orange,
color = 'darkorange',
linestyle = '',
marker = 'o',
markersize = 12,
alpha = 0.75
)
plt.plot(
x, y_miroir,
color = 'green'
)
plt.show()

On peut ajouter une grille pour mieux visualiser les points, Ă l'aide de la fonction plt.grid() :
import matplotlib.pyplot as plt
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
y_miroir = [-i for i in y]
plt.plot(x, y)
plt.plot(x, y_miroir, color = 'darkorange')
# Ajouter une grille (valeurs par défaut)
plt.grid(
axis = 'both', # 'both' : les 2 axes
# 'x' : lignes verticales
# 'y' : lignes horizontales
linestyle = '-', # ligne pleine
linewidth = 0.8, # épaisseur fine
color = '#b0b0b0', # gris pĂąle
alpha = 1.0 # opaque
)
# Si la grille passe par-dessus des points, ajouter :
plt.gca().set_axisbelow(True)
plt.show()

Pour rendre le graphique plus compréhensible, on peut ajouter un titre au graphique, des étiquettes (labels) aux axes et on peut aussi personnaliser les ticks (valeurs affichées) d'un axe, en modifiant leur rotation, leur alignement et la taille de leur police :
import matplotlib.pyplot as plt
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
y_miroir = [-i for i in y]
plt.plot(x, y)
plt.plot(x, y_miroir, color = 'darkorange')
# Titre du graphique
plt.title("Graphique de y = xÂČ et y = -xÂČ")
# Titres des axes
plt.xlabel("Axe des X")
plt.ylabel("Axe des Y")
# Personnalisation des ticks
# (valeurs affichées) de l'axe des X
plt.xticks(
rotation=30, # rotation des ticks
ha='right', # alignement horizontal
fontsize=20 # taille de la police
)
# Ajuste la mise en page pour éviter les coupures
plt.tight_layout()
plt.show()

Lorsque nous avons plusieurs courbes sur le mĂȘme graphique, il est important de les diffĂ©rencier en ajoutant une lĂ©gende.
Pour cela, on peut utiliser le paramÚtre label dans les appels à plt.plot() pour donner une étiquette à chaque courbe, puis appeler la fonction plt.legend() pour afficher la légende avec les étiquettes correspondantes :
import matplotlib.pyplot as plt
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
y_miroir = [-i for i in y]
plt.plot(
x, y,
label='y = xÂČ' # Ă©tiquette pour la lĂ©gende
)
plt.plot(
x, y_miroir,
marker='o',
color = 'darkorange',
label='y = -xÂČ' # Ă©tiquette pour la lĂ©gende
)
# Affiche la légende avec les
# étiquettes définies dans les appels à plt.plot()
plt.legend(
loc='lower right', # position
title="Fonction", # titre de la légende
title_fontsize=30, # taille du titre
prop={'size': 20}, # taille des étiquettes
markerscale=2 # taille des marqueurs
)
plt.show()

Si on souhaite dĂ©cider de la taille exacte de notre graphique, on peut utiliser la fonction plt.figure(), qui doit ĂȘtre appelĂ©e avant les appels Ă plt.plot() :
import matplotlib.pyplot as plt
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
y_miroir = [-i for i in y]
# largeur = 9 pouces, hauteur = 4 pouces
plt.figure(figsize=(9, 4))
plt.plot(x, y)
plt.plot(x, y_miroir, color = 'darkorange')
plt.show()

Au lieu d'afficher le graphique à l'écran avec plt.show(), on peut le sauvegarder dans un fichier image (PNG, JPG, SVG, etc.) en utilisant la fonction plt.savefig() :
plt.savefig("mon_graphique.png") # Sauvegarde le graphique en format PNG
plt.savefig("mon_graphique.svg") # Sauvegarde le graphique en format SVG
plt.savefig("mon_graphique.jpg") # Sauvegarde le graphique en format JPG
plt.savefig("mon_graphique.pdf") # Sauvegarde le graphique en format PDF
Il faut ajouter ce code avant plt.show(), et un fichier image sera créé dans le mĂȘme rĂ©pertoire que le script, avec le nom spĂ©cifiĂ©.
Lorsqu'on gĂ©nĂšre plusieurs graphiques dans le mĂȘme script, il est important de les gĂ©rer correctement pour Ă©viter les confusions entre les diffĂ©rentes figures.
Ce code gĂ©nĂšre 3 courbes diffĂ©rentes sur le mĂȘme graphique :
import matplotlib.pyplot as plt
x = [i for i in range(-10, 11)]
y = [i ** 2 for i in x]
plt.plot(x, y)
plt.plot(x, [-i for i in y])
plt.plot(x, x)
plt.savefig("figure.pdf")
plt.show()
Remarque : par défaut, chaque appel à plt.plot() utilise une couleur différente, ce qui permet de différencier les courbes.

Mais si on voulait créer plusieurs graphiques séparés, il faut utiliser plt.figure() pour créer une nouvelle figure avant de tracer un nouveau graphique, et utiliser plt.close() pour fermer une figure aprÚs l'avoir sauvegardée, afin de libérer les ressources systÚme :
import matplotlib.pyplot as plt
x = [i for i in range(-10, 11)]
y = [i ** 2 for i in x]
plt.figure() # Crée la premiÚre figure
plt.plot(x, y) # Trace une courbe
plt.savefig("figure1.pdf") # Sauvegarde la figure
plt.show() # Affiche la figure (optionnel)
plt.close() # Ferme la figure et libĂšre les ressources
plt.figure() # Nouvelle figure
plt.plot(x, [-i for i in y])
plt.savefig("figure2.pdf")
plt.show() # (optionnel)
plt.close() # Ferme la figure
plt.figure()
plt.plot(x, x)
plt.savefig("figure3.pdf")
plt.show()
plt.close()
- Lâappel Ă
plt.show()est optionnel et sert uniquement Ă afficher les figures Ă lâĂ©cran. - Sans
plt.figure(), les courbes seraient toutes tracĂ©es sur la mĂȘme figure. - Sans
plt.close(), les figures resteraient en mémoire et pourraient ralentir le programme.

Matplotlib offre une grande variété de types de graphiques pour visualiser les données de différentes maniÚres.
Vous pouvez les explorer dans la documentation officielle de Matplotlib.
Voici quelques exemples qui vous seront utiles :
plt.scatter() : pour créer des nuages de points
import matplotlib.pyplot as plt
x = [i for i in range(10)]
y = [i ** 2 for i in x]
tailles_points = [i * 10 for i in y]
# [0, 10, 40, 90, 160, 250, 360, 490, 640, 810]
plt.scatter(x, y, alpha=0.5, s=tailles_points)
plt.scatter(x, x, alpha=0.5, s=200)
plt.show()
plt.scatter() permet de dessiner des points, tout comme plt.plot() avec marker='o' et linestyle=''.
Cependant, plt.scatter() offre plus de contrĂŽle, notamment en permettant de modifier la taille (s) de chaque point individuellement (ici les points bleus).

plt.bar() : pour créer des graphiques à barres
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D']
valeurs = [10, 15, 7, 12]
plt.bar(categories, valeurs)
plt.show()
plt.boxplot() : pour créer des boßtes à moustaches
Contrairement à plt.bar(), qui affiche une seule valeur par catégorie, plt.boxplot() permet de visualiser la distribution complÚte des données pour chaque catégorie.
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D']
data = [
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[1, 3, 5, 7, 9],
[2, 2, 3, 3, 4, 10]
]
plt.boxplot(data, tick_labels=categories)
plt.show()
Comment interpréter une boßte à moustaches :
- La ligne au centre représente la médiane.
- La boßte contient les 50 % centraux des données (entre le 1er et le 3e quartile).
- Les moustaches sâĂ©tendent jusquâĂ la plus petite et la plus grande valeur situĂ©es Ă moins de 1,5 fois lâĂ©cart interquartile (IQR) en dessous du premier quartile et au-dessus du troisiĂšme quartile.
- Les points isolés (en dehors des moustaches) représentent des valeurs aberrantes (outliers).
Un ensemble (set) est une collection non ordonnée et non indexée d'éléments uniques en Python. Les ensembles sont utiles lorsque vous souhaitez stocker des éléments sans doublons et effectuer des opérations mathématiques comme l'union, l'intersection et la différence.
Les ensembles sont définis par des accolades {} ou en utilisant la fonction set(). Par exemple :
mon_ensemble = {1, 2, 3, 4, 5}
autre_ensemble = set([4, 5, 6, 7, 8])
Un {} sert à créer un dictionnaire, une structure de données vue le prochain cours.
Pour créer un ensemble vide, il faut utiliser la fonction set() sans paramÚtre et non un {}.
mon_ensemble_vide = set()
- Unicité : Les ensembles ne peuvent pas contenir de doublons. Si vous essayez d'ajouter un élément déjà présent dans l'ensemble, il ne sera pas ajouté :
mon_ensemble.add(2) # Ne fait rien car 2 est déjà dans l'ensemble
print(mon_ensemble) # Affiche {1, 2, 3, 4, 5}
- Non ordonné : Les éléments d'un ensemble n'ont pas d'ordre spécifique. Vous ne pouvez pas accéder aux éléments par index.
- Modifiable : Comme avec une liste, vous pouvez ajouter ou supprimer des éléments d'un ensemble aprÚs sa création.
Voici quelques opérations courantes que vous pouvez effectuer avec les ensembles en Python :
- Ajouter un élément : Utilisez la méthode
add()pour ajouter un élément à un ensemble.
mon_ensemble.add(6)
print(mon_ensemble) # Affiche {1, 2, 3, 4, 5, 6} (ordre variable)
à l'inverse des listes, les ensembles (set) ne garantissent aucun ordre précis.
Un élément ajouté, comme le chiffre 6, peut se retrouver à n'importe quelle position.
D'une exécution à l'autre, l'ordre d'affichage des éléments peut donc varier.
- Supprimer un élément : Utilisez la méthode
remove()pour supprimer un élément spécifique (lÚve une erreur si l'élément n'existe pas) oudiscard()(ne lÚve pas d'erreur).
mon_ensemble.remove(3)
mon_ensemble.discard(10) # Ne fait rien si 10 n'est pas dans l'ensemble
print(mon_ensemble) # Affiche {1, 2, 4, 5, 6} (ordre variable)
- Vérifier l'appartenance : Utilisez l'opérateur
inpour vérifier si un élément est dans un ensemble.
if 4 in mon_ensemble:
print("4 est dans l'ensemble")
- Union : Utilisez l'opérateur
|pour obtenir l'union de deux ensembles.
union = mon_ensemble | autre_ensemble
print(union) # Affiche {1, 2, 4, 5, 6, 7, 8} (ordre variable)
- Intersection : Utilisez l'opérateur
&pour obtenir l'intersection de deux ensembles.
intersection = mon_ensemble & autre_ensemble
print(intersection) # Affiche {4, 5} (ordre variable)
- Différence : Utilisez l'opérateur
-pour obtenir la différence entre deux ensembles.
difference = mon_ensemble - autre_ensemble
print(difference) # Affiche {1, 2} (ordre variable)

Pour convertir un ensemble en une liste, il suffit d'appeler la fonction list() en passant l'ensemble en paramĂštre.
mon_ensemble = {1,2,3,4}
ma_liste = list(mon_ensemble)
print(f"Ma liste : {ma_liste}")
Vous pouvez utiliser une boucle for pour itérer sur les éléments d'un ensemble, bien que l'ordre des éléments ne soit pas garanti :
for element in mon_ensemble:
print(element)
Pour favoriser une progression efficace, ce cours adopte une approche de classe inversée. Ce modÚle déplace l'acquisition théorique hors de la classe pour transformer les heures de rencontre en véritables séances d'application pratique.
-
Ă la maison (Exploration et Appropriation) : Vous ĂȘtes le maĂźtre de votre rythme. Ces activitĂ©s vous permettent de dĂ©couvrir les nouveaux concepts et tester les exemples au moment oĂč vous ĂȘtes le plus concentrĂ©. Si une notion vous semble obscure, n'hĂ©sitez pas Ă poser des questions Ă votre prof au fur et Ă mesure.
-
En classe (Application et Consolidation) : Le temps en prĂ©sentiel est une ressource prĂ©cieuse. Nous l'utilisons pour nous attaquer aux dĂ©fis plus complexes et aux exercices de programmation qui demandent une mobilisation active de vos connaissances. Câest le moment idĂ©al pour obtenir une rĂ©troaction immĂ©diate, collaborer avec vos pairs et bĂ©nĂ©ficier de l'accompagnement de votre enseignant au moment oĂč vous en avez le plus besoin.
- đ ActivitĂ©s Ă faire Ă la maison
- đ« ActivitĂ©s Ă faire en classe
đ§ Auto-validation des connaissancesâ
Ce formulaire sert à vérifier votre compréhension des éléments les plus importants de la rencontre R09. Ne faites ce questionnaire que lorsque vous vous sentez en trÚs bonne maßtrise de la matiÚre. En classe, dÚs votre arrivée, vous aurez un questionnaire trÚs similaire, évalué sommativement, à compléter sans accÚs à aucune documentation.
Ne pas remplir le formulaire diminue fortement vos chances de rĂ©ussir lâĂ©valuation sommative en dĂ©but de rencontre.
Assurez-vous de bien comprendre toutes les notions derriĂšre chaque question.
âïž Exercices de comprĂ©hensionâ
Dessinez sur papier, approximativement, le graphique qui serait produit par l'exécution du code ci-dessous.
N'exécutez pas le code avant d'avoir terminé votre dessin !
import matplotlib.pyplot as plt
transport = ["Bus", "Voiture", "Vélo", "Skateboard", "Trottinette", "Marche"]
etudiants = [40, 30, 20, 15, 10, 5]
plt.bar(transport, etudiants)
plt.title("Comment les étudiants viennent au cégep")
plt.xlabel("Mode de transport")
plt.ylabel("Nombre d'étudiants")
plt.show()
Validez ensuite votre réponse en exécutant le code.
đš Exercices de crĂ©ationâ
Umbrella Corporation souhaite afficher la liste des virus qu'elle possĂšde.
La présentation souhaitée est détaillée ci-dessous. La liste est contenue dans la variable virus.
virus = ["Virus-T", "Virus-C", "Virus-G", "Uroboros"]
â ïž CONTRAINTES Ă RESPECTERâ
- Votre code doit fonctionner peu importe le nombre d'éléments dans la liste.
- Si la liste est vide, afficher un message sympa Ă l'utilisateur.
- Si la liste n'est pas vide, vous devez utiliser un
for element in listepour parcourir les éléments de la liste. - Vous pouvez modifier le contenu de la liste fournie pour tester différents scénarios.
â RĂSULTAT ATTENDU AVEC LA LISTE DE DĂPART FOURNIEâ
Liste des 4 virus :
Virus-T
Virus-C
Virus-G
Uroboros
â RĂSULTAT ATTENDU AVEC UNE LISTE VIDEâ
Désolé aucun produit pharmaceutique mortel disponible
Recopiez le code de l'exercice Affichage des virus dans un nouveau script, il vous servira de point de départ.
La Umbrella Corporation souhaite améliorer le rapport précédent fait.
Elle vous fournit sous la forme d'une liste des caractéristiques sur chaque virus.
virus = ["Virus-T", "Virus-C", "Virus-G", "Uroboros"]
caracteristiques = [
"Transforme les humains en zombies et armes biologiques",
"Provoque des mutations extrĂȘmes et rĂ©gĂ©nĂšre les tissus",
"Cause des mutations incontrÎlables avec régénération cellulaire rapide",
"Consomme les organismes incompatibles et renforce les hĂŽtes compatibles"
]
i dans la liste virus possĂšde la caractĂ©ristique Ă l'index i dans la liste caracteristiques). Ătant donnĂ© qu'un mĂȘme index doit ĂȘtre utilisĂ© pour parcourir les 2 listes simultanĂ©ment, un for element in liste ne fonctionnera pas, vous aurez besoin d'une boucle classique (while ou for i in range(len())).â RĂSULTAT ATTENDU AVEC LES LISTES DE DĂPART FOURNIESâ
Liste des 4 virus :
Virus-T - Transforme les humains en zombies et armes biologiques
Virus-C - Provoque des mutations extrĂȘmes et rĂ©gĂ©nĂšre les tissus
Virus-G - Cause des mutations incontrÎlables avec régénération cellulaire rapide
Uroboros - Consomme les organismes incompatibles et renforce les hĂŽtes compatibles
Recopiez le code de l'exercice Affichage des virus dans un nouveau script, il vous servira de point de départ.
La Umbrella Corporation souhaite améliorer le rapport précédent fait.
La corporation souhaite désormais afficher dans le rapport le taux de succÚs de mutation.
Elle vous fournit désormais toutes les données sous la forme d'une seule liste!
virus_et_autres_info = [
["Virus-T", 0.9 ,"Transforme les humains en zombies et armes biologiques"],
["Virus-C", 0.0001 ,"Provoque des mutations extrĂȘmes et rĂ©gĂ©nĂšre les tissus"],
["Virus-G", 0.85, "Cause des mutations incontrÎlables avec régénération cellulaire rapide"],
["Uroboros", 0.005, "Consomme les organismes incompatibles et renforce les hĂŽtes compatibles"]
]
â RĂSULTAT ATTENDU AVEC LA LISTE DE DĂPART FOURNIEâ
Liste des 4 virus :
Virus-T - Transforme les humains en zombies et armes biologiques (taux de mutation estimé : 90.0%)
Virus-C - Provoque des mutations extrĂȘmes et rĂ©gĂ©nĂšre les tissus (taux de mutation estimĂ© : 0.01%)
Virus-G - Cause des mutations incontrÎlables avec régénération cellulaire rapide (taux de mutation estimé : 85.0%)
Uroboros - Consomme les organismes incompatibles et renforce les hÎtes compatibles (taux de mutation estimé : 0.5%)
La compréhension de liste permet de transformer, filtrer et manipuler des données de maniÚre concise et efficace.
Ă partir de la liste suivante :
liste = [1, 2, 3, 4, 5]
Vous devez créer 5 nouvelles listes en utilisant exclusivement la compréhension de liste.
Chaque cas représente une transformation ou une opération différente.
đ§© CAS Ă COMPLĂTERâ
-
Multiplier chaque élément par 5
Résultat attendu : [5, 10, 15, 20, 25] -
Doubler uniquement les nombres pairs
Résultat attendu : [4, 8] -
Créer une nouvelle liste contenant les carrés sous forme de texte
Résultat attendu : ['Le carré de 1 est 1', 'Le carré de 2 est 4', ..., 'Le carré de 5 est 25']
indice : une f-string sera nécessaire dans la sectionexpressionde la liste de compréhension -
Créer une liste de booléens indiquant si chaque nombre est supérieur à 3
Résultat attendu : [False, False, False, True, True] -
Remplacer les nombres impairs par le mot "impair"
Résultat attendu : ['impair', 2, 'impair', 4, 'impair']
indice : un if/else compacte est nécessaire pour la sectionexpressionde la liste de compréhension
â FORMAT ATTENDUâ
Pour chaque cas, vous devez écrire votre code comme ceci :
casX = [ ... ] # Remplacez les "..." par votre compréhension de liste
print(casX)
Les ensembles (set) permettent de stocker des Ă©lĂ©ments uniques et d'effectuer des opĂ©rations mathĂ©matiques comme lâunion, lâintersection ou la diffĂ©rence.
Ă partir des ensembles suivants :
ensemble1 = {1, 2, 3, 4, 5}
ensemble2 = {4, 5, 6, 7, 8}
Vous devez créer 3 nouveaux ensembles en utilisant exclusivement des opérations sur les set.
Pas de boucles, ni de compréhension de liste. Chaque cas représente une transformation ou une opération différente.
đ§© CAS Ă COMPLĂTERâ
- Résultat attendu : {1, 2, 3, 4, 5, 6, 7, 8}
- Résultat attendu : {4, 5}
- Résultat attendu : {1, 2, 3}
â FORMAT ATTENDUâ
Pour chaque cas, vous devez écrire votre code comme ceci :
casX = ... # Remplacez les "..." par une opération sur les ensembles
print(casX)
Recopiez votre code de l'exercice "Jeu de devinette" de la rencontre #5, il vous servira de point de départ.
Vous devez améliorer le jeu afin d'insulter gentiment l'utilisateur s'il saisit un nombre déjà saisi.
MalgrĂ© sa stupiditĂ©, vous devez quand mĂȘme lui indiquer si la rĂ©ponse est plus haut ou plus bas!
Indices :
- Vous devez stocker dans une liste tous les essais de l'utilisateur.
- à chaque nouvel essai, il faut vérifier s'il était déjà présent dans la liste afin d'insulter l'utilisateur au besoin.
â EXEMPLE DE RĂSULTAT ATTENDUâ
Rappel : le nombre est choisi alĂ©atoirement par l'ordinateur Ă chaque partie.Tente de trouver le nombre que j'ai en tĂȘte : 50
Plus haut!
Tente de trouver le nombre que j'ai en tĂȘte : 95
Plus bas!
Tente de trouver le nombre que j'ai en tĂȘte : 92
Plus bas!
Tente de trouver le nombre que j'ai en tĂȘte : 50
Tu ne sembles pas ĂȘtre le pingouin glissant le plus loin...
Tu avais déjà essayé cette réponse...
Plus haut!
Tente de trouver le nombre que j'ai en tĂȘte : 89
Bravo humain, tu as trouvé le nombre!
La corporation remarque des variations de la température dans l'une des salles d'entreposage.
Différentes mesures de la température ont été prises durant la journée :
temperatures = [23.5, 25.4, 27.6, 21.9, 26.7, 24.6]
đŻ OBJECTIFSâ
- Calculer par programmation :
- Le nombre de mesures prises
- La somme des températures
- La température moyenne
- La température la plus basse
- La température la plus élevée
- Afficher ces informations dans le format défini plus bas
â ïž CONTRAINTES Ă RESPECTERâ
- Vous n'avez pas le droit d'utiliser des fonctions prédéfinies comme
min(),max(),sum(),len(),sort(),sorted(), ... (àČ„âŁàČ„). - Vous ne pouvez utiliser qu'une seule boucle (
for element in liste). - Votre code doit fonctionner peu importe le nombre de mesures prises.
â RĂSULTAT ATTENDU AVEC LA LISTE DE DĂPART FOURNIEâ
Conservez uniquement les 2 premiÚres décimales
Températures : [23.5, 25.4, 27.6, 21.9, 26.7, 24.6]
nb. mesures : 6
somme : 149.7
moyenne : 24.95
min : 21.9
max : 27.6
- Nombre de mesures : Créer une variable
compteur. à chaque lecture d'une température, incrémenter la variable de 1; - Somme : Créer une variable
sommeinitialisée à zéro. à chaque lecture d'une températeur, ajouter la valeur de la température lue à la variablesomme; - Moyenne : Calculable à l'aide des 2 variables précédentes;
- Min : Créer une variable
min_tempégale au premier élément de la liste (min_temp = temperatures[0]).
à chaque lecture d'une température, vérifier si celle-ci est plus petite au minimum actuel ; si c'est le cas, mettremin_tempà jour. - Max : Créer une variable
max_tempégale au premier élément de la liste (max_temp = temperatures[0]).
à chaque lecture d'une température, vérifier si celle-ci est plus grande au maximum actuel ; si c'est le cas, mettremax_tempà jour.
Recopiez le code du numéro précédent dans un nouveau script, il vous servira de point de départ.
Vous devez modifier le code afin de respecter ces 2 contraintes :
- Vous n'avez pas le droit d'utiliser de boucle.
- Cette fois, vous devez utiliser des fonctions prédéfinies pour réaliser les calculs.
Le rĂ©sultat produit doit ĂȘtre identique au numĂ©ro prĂ©cĂ©dent.
Vous devez reproduire, le plus fidĂšlement possible, le graphique suivant :

Les données nécessaires au graphique sont fournies sous la forme de 2 listes :
temperatures = [5.0, 5.816326530612245, 6.63265306122449, 7.448979591836735,
8.26530612244898, 9.081632653061224, 9.89795918367347, 10.714285714285715,
11.53061224489796, 12.346938775510203, 13.16326530612245, 13.979591836734695,
14.795918367346939, 15.612244897959183, 16.42857142857143, 17.244897959183675,
18.06122448979592, 18.877551020408163, 19.693877551020407, 20.510204081632654,
21.3265306122449, 22.142857142857142, 22.95918367346939, 23.775510204081634,
24.591836734693878, 25.408163265306122, 26.224489795918366, 27.040816326530614,
27.857142857142858, 28.6734693877551, 29.48979591836735, 30.306122448979593,
31.122448979591837, 31.93877551020408, 32.755102040816325, 33.57142857142857,
34.38775510204081, 35.20408163265306, 36.02040816326531, 36.83673469387755,
37.6530612244898, 38.46938775510204, 39.285714285714285, 40.10204081632653,
40.91836734693878, 41.734693877551024, 42.55102040816327, 43.36734693877551,
44.183673469387756, 45.0]
photosynthese = [-0.4208586207089154, -0.9002982388093212, 2.90695296113819, -2.3816678390159787,
1.6301613438564548, -0.6395165673646073, 0.4062406047933971, -3.0807857229738986,
0.7630986943366226, -7.109276797690082, 1.0400704458874834, -1.6231609563256293,
3.5158201201035792, 0.7073045481852345, 4.462535684066591, 3.469725363276981,
7.800055142339156, 3.6581720517708147, 12.848632806212834, 17.01723976662892,
21.583172080660294, 32.30270168260925, 34.27508939188592, 43.959441989933595,
52.391688150519585, 61.14262118477141, 81.52320747993383, 80.49707329499296,
90.43305211916575, 99.87264809035379, 99.64218123860432, 103.57940043588764,
101.38268425121551, 92.5592720723287, 83.62418715159393, 84.92142209312819,
70.6148436983045, 59.1725221343123, 49.47349737546689, 44.62045689259768,
31.310564654507512, 24.072064122012684, 16.917980484652784, 13.408756457014197,
7.579626366114782, 8.420568754382284, 5.911835499055119, 3.4010226647009074,
3.2056589365442028, 3.021178647669223]
Vous devez reproduire, le plus fidĂšlement possible, le graphique ci-dessous.
Il représente la croissance de 10 plantes sur 30 jours.
Chaque point en vert semi-transparent représente une mesure d'une plante, il y a donc 300 points.
La courbe représente la moyenne de leur croissance.

Indices :
- La transparence des points peut ĂȘtre dĂ©terminĂ©e avec le paramĂštre alpha (ex :
alpha=0.25) - La fonction
plot(...)devrait ĂȘtre appelĂ©e 11 fois :- Une fois pour chacune des 10 plantes pour afficher les points
- Une fois pour la moyenne pour afficher la courbe
- Pour la courbe des moyennes, vous devez créer une nouvelle liste représentant la moyenne de chacun des 30 jours
Les données nécessaires au graphique sont fournies sous la forme d'une liste par plante (1 donnée par jour) :
jour = list(range(1, 31)) #GénÚre une liste [1,2,3,...,28,29,30]
plante1 = [0.8976591646433567, 0.0, 0.15498324299736432, 0.9841528009536402, 0.15657204065985764, 0.0, 0.33447160605066895, 4.6283876633678975, 5.266817494776518, 3.4487692867267548, 5.870556870585399, 5.59921181812971, 9.151254660249002, 7.310614349370278, 9.851989318343366, 13.824188176315175, 15.464723326276136, 15.702426828326931, 13.512838407325102, 12.809356526359828, 17.47960344645509, 15.123420443868309, 17.40785829723269, 19.197800939941423, 20.154793311136707, 17.915665513991193, 20.104929315636344, 17.305250783347308, 19.13156508363107, 21.033513462238393]
plante2 = [0.17528353328795931, 0.2756336458541735, 0.0, 0.0, 0.0, 0.6309221590379746, 3.727550566214523, 1.2508511778721294, 0.7024180814306074, 6.830442869157721, 4.936682177229124, 4.5291192276271754, 4.990690106855183, 9.895431855587745, 11.417271004590937, 10.827200698671112, 12.598193409811389, 12.815001837722994, 16.14637147427025, 14.621077844225155, 17.03212243808826, 17.027520550344995, 16.747459643059045, 19.755682219447348, 20.9180585108655, 23.47304450933025, 17.30950120875156, 17.337504826772005, 19.26714999504858, 21.294379182578343]
plante3 = [0.7102632701578836, 0.0, 0.0, 0.0, 2.3343028391462797, 2.3438873675900336, 0.6454097889242174, 1.0996724026369975, 3.286045694345812, 3.9285399427808274, 3.612599736185482, 4.30020407797379, 9.145504683557949, 9.21225840090138, 8.562279898630978, 10.377545561479028, 10.300619634750328, 12.13895510845491, 14.769665211706135, 13.690346592845321, 15.37871243532946, 16.583317142828676, 16.57879523525781, 16.756826717506286, 17.604537555459814, 18.40131885619254, 16.404259701325834, 18.89079355214781, 20.288042085972553, 18.21005148218242]
plante4 = [0.0, 0.0, 0.8973792501708838, 0.9830097528856888, 0.0, 0.6461179782755417, 0.23226953686786578, 1.2472478853272517, 6.401366814252393, 2.0415819065854146, 3.891611111275125, 5.262117713514414, 7.876585352377606, 7.183706437052258, 12.426333923266526, 9.649513617333888, 12.73628479093696, 12.478132650678955, 15.249038804916301, 17.805230262139887, 13.063427000000233, 15.159135971994353, 17.14983145120984, 21.307851142556363, 17.03068748570027, 20.253810785360578, 19.569583288170133, 19.743382094110608, 22.00312569974368, 21.748919012129882]
plante5 = [0.6694150780194975, 1.4938014956025913, 0.35368890690893984, 0.9833023284099253, 1.2338260363941644, 2.192373222056616, 0.7787428769386353, 1.6909990215262607, 3.4065845701224866, 4.510530462984979, 4.769874841771353, 6.539463845509872, 10.129871941734269, 11.25078568737028, 12.01651914074369, 9.673096507429102, 11.77202031960022, 14.999346444191085, 14.834671920744888, 15.668917765971251, 15.638377444681467, 19.014525684346527, 16.407694562665597, 18.564642981001583, 17.46831271855271, 16.90077670848018, 20.338978550282203, 18.906724587915743, 19.694358440253918, 16.657933007109023]
plante6 = [1.3443398103456938, 1.7153571861619716, 0.1333277692479119, 1.6103108806176778, 0.0, 2.6826886678064543, 0.7904991374065058, 4.151998225725303, 1.508265561315599, 3.980472455562051, 5.12564841025743, 6.54192202156568, 9.19733810691179, 10.520195804652623, 9.10149309227341, 13.48939226520939, 13.149708808238799, 13.883893735070835, 15.228942187800202, 17.639327729443565, 18.317677985660385, 15.481336669078772, 18.548569162881705, 19.176333920189357, 17.836996378597085, 21.095745501671274, 20.171253471005997, 19.018100870312136, 17.274245444905446, 21.26052545093896]
plante7 = [0.0, 0.8985906272911144, 0.0, 2.0769771214349646, 0.0, 0.1303882294417198, 3.0373598089846636, 4.5034510344243515, 2.6102761908237677, 4.0807103767398845, 5.082159908953121, 6.926619478650151, 6.845441288816597, 10.789809579653474, 9.57315458379442, 9.12607939931834, 14.263096787065773, 11.63195582037034, 14.232154873258024, 15.820119635528503, 19.262088637822018, 15.523011851191633, 17.47956143053687, 17.34668556294283, 19.63177817156293, 16.291851406997555, 20.408500890879306, 18.695461783200003, 20.966068097868853, 20.542745168091884]
plante8 = [0.0, 0.0, 0.31593716941831607, 1.797879409074148, 1.3549021087528006, 2.72834888395552, 3.8987228957550815, 1.4887672079330272, 2.5269437973885465, 2.3589672604919345, 5.361937377304439, 6.7009581034667764, 5.728281913775275, 8.740111897509529, 11.79561232423084, 12.380547993337167, 12.103145069789937, 13.47668835211402, 16.290659431434516, 14.372002381487956, 16.470123949718353, 17.309302440725823, 14.597188305730064, 15.981267855499347, 18.953169075105787, 16.98465673667939, 18.473607004645785, 18.227860154572642, 14.21517584840647, 21.26330654419327]
plante9 = [0.0, 0.4522723346745793, 1.7586043686210397, 0.0, 1.2458737753703606, 2.015879463453331, 1.417370812307034, 1.8886807926980338, 2.2707244139301315, 2.7734256465247826, 5.501813520535498, 4.751188398387352, 10.846530040610622, 4.8128866460687805, 9.089459498762263, 11.772422596289898, 11.254134423545405, 13.530654216426512, 17.50499431491864, 16.576957278084116, 11.990172734262561, 16.994063860033176, 18.276243579795942, 19.50467136528814, 20.242796584353783, 18.524683668288525, 17.51022351284659, 17.155392328472765, 18.613109151742346, 17.347847505152078]
plante10 = [0.0, 1.6617879828120876, 1.1114070518778814, 1.2413536244030396, 1.0957815500862658, 1.5336617782080486, 1.6312859846759336, 4.19868256424098, 3.416719289385172, 4.608614661530128, 3.5593769395445642, 6.521317626985673, 5.077549860821263, 9.603200324467075, 5.755340324739416, 9.639255450256496, 14.271414716495176, 12.778076460254391, 15.402533086111394, 16.708734436876853, 14.17417569230928, 17.100934078054095, 18.80519666846201, 14.897059850615431, 21.046899131076906, 15.375114293061099, 16.463903627318345, 20.611482792264987, 19.857870964605823, 19.38782379439097]
Vous devez reproduire, le plus fidĂšlement possible, le graphique ci-dessous.
Il représente la consommation moyenne d'eau (millions de m3/an) au Canada.

Indices :
- Vous devez créer une nouvelle liste représentant la moyenne pour chaque secteur
Les données nécessaires au graphique sont fournies sous la forme des listes ci-dessous :
secteurs = ["RĂ©sidentiel", "Agricole", "Industriel", "Ănergie", "Municipal", "Autres"]
couleur_barres = ['skyblue', 'limegreen', 'gold', 'salmon', 'orchid', 'gray']
# DonnĂ©es totales pour lâensemble du Canada (12 donnĂ©es par liste, une donnĂ©e par province/territoire)
residentiel = [410, 380, 220, 200, 890, 860, 170, 180, 60, 100, 40, 30, 25]
agricole = [780, 640, 850, 600, 720, 670, 230, 210, 150, 180, 20, 15, 10]
industriel = [520, 410, 290, 310, 1100, 970, 190, 200, 50, 130, 60, 40, 20]
energie = [300, 270, 180, 150, 400, 420, 100, 110, 30, 90, 25, 20, 10]
municipal = [260, 250, 130, 120, 680, 700, 90, 100, 25, 70, 15, 10, 8]
autres = [90, 80, 60, 50, 130, 120, 40, 40, 10, 25, 5, 5, 3]
đŻ Solutions des exercices
Un solutionnaire possible pour chaque exercice est disponible en format vidĂ©o avec des explications. Vous pouvez vous en servir pour comparer votre solution avec une solution possible jugĂ©e optimale et vous dĂ©bloquer aprĂšs un long moment bloquĂ© sur un exercice (ex. 20 minutes) et aprĂšs avoir utilisĂ© le dĂ©gogueur pour essayer par vous-mĂȘme de trouver le problĂšme.
Il est tout Ă fait normal que certains problĂšmes demandent du temps, de la rĂ©flexion, et parfois mĂȘme un peu de frustration. Câest prĂ©cisĂ©ment dans ces moments dâeffort que lâapprentissage sâancre rĂ©ellement.
Consulter un solutionnaire avant dâavoir tentĂ© lâexercice par soi-mĂȘme, ou le parcourir trop rapidement, revient Ă court-circuiter le processus dâapprentissage. Ce nâest pas simplement contre-productif, câest pĂ©dagogiquement dĂ©sastreux.
En sautant lâĂ©tape de la rĂ©flexion personnelle, on prive son cerveau de lâoccasion de construire des connexions durables. Et Ă force de rĂ©pĂ©ter ce rĂ©flexe, on risque de passer Ă cĂŽtĂ© des compĂ©tences essentielles, ce qui peut mener Ă des Ă©checs plus tard, mĂȘme si tout semble facile sur le moment. Alors oui, prenez le temps. Lâerreur fait partie du jeu. Câest en cherchant, en tĂątonnant, en doutant, quâon devient rĂ©ellement compĂ©tent. Le solutionnaire doit ĂȘtre un outil de validation, pas un raccourci.
đš Solution des exercices de crĂ©ation :