đ Graphiques, List, Set
- Liste (list)
- For (séquence)
- Compréhension de liste
- Matplotlib
- Ensemble (set)
- Exercices
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 linéaire
plt.show() # Pour afficher le graphique
PlutĂŽt que :
matplotlib.pyplot.plot(x, y)
matplotlib.pyplot.show()
qui est plus long et moins lisible.
Créons d'abord un graphique trÚs simple, avec un seul point :
import matplotlib.pyplot as plt
# Données à tracer
x = [0] # Liste contenant un seul point x=0
y = [0] # Liste contenant un seul point y=0
# Créer le graphique
plt.plot(x, y, 'o') # 'o' indique que nous voulons un point
# Afficher le graphique
plt.show()
Exécutez ce code.
Dans cet exemple :
- Nous importons la bibliothĂšque Matplotlib en utilisant
import matplotlib.pyplot as plt. - Nous définissons deux listes
xetyqui contiennent les coordonnées du point à tracer, sous la forme de listes. - Nous utilisons la fonction
plt.plot(x, y, 'o')pour créer le graphique. Le troisiÚme paramÚtre'o'indique que nous voulons afficher des points (des cercles) aux coordonnées spécifiées. - Enfin, nous affichons le graphique avec
plt.show().
Ajoutons maintenant plus de points (en modifiant les listes x et y) :
x = [-100, -50, 0, 50, 100] # Liste des points x
y = [10000, 2500, 0, 2500, 10000] # Liste des points y (carré de x)
Exécutez votre script modifié.
Nous allons maintenant ajouter encore plus de points pour obtenir une courbe :
x = [i for i in range(-100, 101)] # Liste des entiers de -100 Ă 100
y = [i ** 2 for i in x] # Liste des carrés des entiers
Exécutez encore votre script.
Puisqu'il y a maintenant beaucoup de points, on peut remplacer le marqueur 'o' par '-' pour tracer une ligne continue :
plt.plot(x, y, '-') # Tracer une ligne sans marqueur
Exécutez encore votre script pour voir la différence.
Vous devriez voir une belle parabole s'afficher.
On veut maintenant afficher en rouge les points oĂč x est un multiple de 10 :
# Ajouter des points rouges pour x multiple de 10
x_rouge = [i for i in x if i % 10 == 0]
y_rouge = [i ** 2 for i in x_rouge]
plt.plot(x_rouge, y_rouge, 'ro') # 'ro' indique des points rouges
Ajoutez ce code avant plt.show() et exécutez encore votre script.
Ajoutons maintenant la courbe miroir en vert pour y = -xÂČ :
# Ajouter la courbe miroir y = -xÂČ en vert
y_miroir = [-i ** 2 for i in x]
plt.plot(x, y_miroir, 'g-') # 'g-' indique une ligne verte
Ajoutez ce code avant plt.show() et exécutez encore votre script.
Pour rendre le graphique plus compréhensible, on peut ajouter un titre et des étiquettes (labels) aux axes :
plt.title("Graphique de y = xÂČ et y = -xÂČ")
plt.xlabel("Axe des X")
plt.ylabel("Axe des Y")
Ajoutez ce code avant plt.show() et exécutez encore votre script.
L'étiquette de l'axe des Y se retrouve un peu coupée ?
On peut ajuster la mise en page avec :
plt.tight_layout() # Ajuste la mise en page pour éviter les coupures
Ajoutez ce code avant plt.show() et exécutez encore votre script.
On peut aussi ajouter une grille pour mieux visualiser les points :
plt.grid(True) # Active la grille
Ajoutez ce code avant plt.show() et exécutez encore votre script.
Aussi, si vous avez plusieurs courbes, vous pouvez ajouter une légende pour les différencier.
Pour ce faire, ajoutez une valeur (sous forme de str) au paramĂštre label Ă chaque courbe dans les appels Ă plt.plot()` :
plt.plot(x, y, '-', label='y = xÂČ')
plt.plot(x_rouge, y_rouge, 'ro', label='x multiple de 10')
plt.plot(x, y_miroir, 'g-', label='y = -xÂČ')
puis ajoutez l'appel Ă la fonction plt.legend() avant plt.show() :
plt.legend() # Affiche la légende
Exécutez encore votre script.
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
Ajoutez ce code avant plt.show() et exécutez encore votre script.
Vous devriez voir les fichiers image créés dans le répertoire de votre script.
Matplotlib offre de nombreuses fonctionnalités avancées pour personnaliser vos graphiques. Voici quelques exemples :
- Graphiques Ă barres : Utilisez
plt.bar()pour créer des graphiques à barres. - Histogrammes : Utilisez
plt.hist()pour créer des histogrammes. - Graphiques en nuage de points : Utilisez
plt.scatter()pour créer des graphiques en nuage de points. - Personnalisation des couleurs et des styles : Vous pouvez personnaliser les couleurs, les styles de ligne, les marqueurs, etc.
- Sous-graphiques : Utilisez
plt.subplot()pour crĂ©er plusieurs graphiques dans une mĂȘme figure. - Annotations : Ajoutez des annotations Ă vos graphiques avec
plt.annotate().
Pour en savoir plus sur ces fonctionnalités et d'autres options avancées, consultez la documentation officielle de Matplotlib.
Nous verrons plus tard la bibliothÚque Numpy qui permet de manipuler efficacement des tableaux de données, ce qui est souvent utile en combinaison avec Matplotlib pour la visualisation de données.
Voici un exemple simple de création d'un graphique à barres avec Matplotlib :
import matplotlib.pyplot as plt
# Données à tracer
categories = ['A', 'B', 'C', 'D']
valeurs = [10, 15, 7, 12]
# Créer le graphique à barres
plt.bar(categories, valeurs, color='skyblue')
# Ajouter un titre et des étiquettes
plt.title("Graphique Ă barres")
plt.xlabel("Catégories")
plt.ylabel("Valeurs")
# Afficher le graphique
plt.show()
On peut ajouter des barres d'erreur :
erreurs = [1, 2, 1, 2]
plt.bar(categories, valeurs, yerr=erreurs, capsize=5, color='skyblue')
On peut crĂ©er plusieurs graphiques dans une mĂȘme figure en utilisant la fonction plt.subplot().
Voici un exemple :
import matplotlib.pyplot as plt
import math
# Créer une figure avec 4 sous-graphiques (2 lignes, 2 colonnes)
plt.subplot(2, 2, 1) # Premier sous-graphique
x1 = [i/10 for i in range(-100, 101)]
y1 = [i ** 2 for i in x1]
plt.plot(x1, y1, 'b-')
plt.title("y = xÂČ")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.subplot(2, 2, 3) # TroisiĂšme sous-graphique
x2 = [i/10 for i in range(-100, 101)]
y2 = [math.sin(i) for i in x2]
plt.plot(x2, y2, 'r-')
plt.title("y = sin(x)")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.subplot(2, 2, 2) # DeuxiĂšme sous-graphique
categories = ['A', 'B', 'C', 'D']
valeurs = [10, 15, 7, 12]
erreurs = [1, 2, 1, 2]
plt.bar(categories, valeurs, yerr=erreurs, capsize=5, color='skyblue')
plt.title("Graphique Ă barres")
plt.xlabel("Catégories")
plt.ylabel("Valeurs")
plt.subplot(2, 2, 4) # QuatriĂšme sous-graphique
x = [i for i in range(-100, 101)]
y = [i ** 2 for i in x]
plt.plot(x, y, '-', label='y = xÂČ')
x_rouge = [i for i in x if i % 10 == 0]
y_rouge = [i ** 2 for i in x_rouge]
plt.plot(x_rouge, y_rouge, 'ro', label='x multiple de 10')
y_miroir = [-i ** 2 for i in x]
plt.plot(x, y_miroir, 'g-', label='y = -xÂČ')
plt.title("Graphique de y = xÂČ et y = -xÂČ")
plt.xlabel("Axe des X")
plt.ylabel("Axe des Y")
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show() # Afficher les 4 sous-graphiques
Résultat :

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])
Pour créer un ensemble vide, il faut utiliser la fonction set() sans paramÚtre et non {}.
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}
- 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}
- 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}
- Intersection : Utilisez l'opérateur
&pour obtenir l'intersection de deux ensembles.
intersection = mon_ensemble & autre_ensemble
print(intersection) # Affiche {4, 5}
- Différence : Utilisez l'opérateur
-pour obtenir la différence entre deux ensembles.
difference = mon_ensemble - autre_ensemble
print(difference) # Affiche {1, 2, 6}
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)
âïž 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.
- 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.
- Si la liste est vide, afficher un message sympa Ă l'utilisateur.
â 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
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, 24.9, 26.7, 24.6]
đŻ OBJECTIFSâ
- Calculer par programmation :
- La température la plus basse
- La température la plus élevée
- La température moyenne
- Le nombre de mesures prises
- 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.
Pour initialiser les variables de la température la plus basse et la plus élevée, vous pouvez utiliser la premiÚre valeur de la liste des températures. Par exemple :
min_temp = temperatures[0]
max_temp = temperatures[0]
â RĂSULTAT ATTENDU AVEC LA LISTE DE DĂPART FOURNIEâ
Températures : [23.5, 25.4, 27.6, 24.9, 26.7, 24.6]
min : 23.5
max : 27.6
moyenne : 25.45
nb. mesures : 6
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.
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!
â 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!
Des océanographes étudient les espÚces marines observées dans deux zones cÎtiÚres différentes.
Chaque équipe a recensé les espÚces dans sa zone, elles sont recensées dans les 2 listes ci-dessous.
# Liste des espÚces marines observées dans la zone Atlantique
zone_atlantique = ["morue", "homard", "maquereau", "phoque"]
# Liste des espÚces marines observées dans la zone Pacifique
zone_pacifique = ["saumon", "morue", "otarie", "maquereau"]
Pour établir un inventaire global, ils veulent fusionner les deux listes sans doublons.
â ïž CONTRAINTES Ă RESPECTERâ
- Un ensemble doit ĂȘtre utilisĂ© pour retirer les doublons.
- Votre code doit fonctionner peu importe les espĂšces dans les 2 zones.
â RĂSULTAT ATTENDUâ
L'ordre des éléments peut varier (en particulier si vous avez utilisé un set)!
EspÚces recensées : ["morue", "homard", "maquereau", "phoque", "saumon", "otarie"]
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%)
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%)
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 10 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] -
Ajouter 3 à chaque élément
Résultat attendu : [4, 5, 6, 7, 8] -
Obtenir le carré de chaque élément
Résultat attendu : [1, 4, 9, 16, 25] -
Convertir chaque nombre en chaĂźne de caractĂšres
Résultat attendu : ['1', '2', '3', '4', '5'] -
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'] -
Filtrer les nombres supérieurs à 2 et les multiplier par 10
Résultat attendu : [30, 40, 50] -
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'] -
Créer une liste de chaßnes indiquant si chaque nombre est pair ou impair
Résultat attendu : ['1 est impair', '2 est pair', '3 est impair', '4 est pair', '5 est impair']
â 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)
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.
La courbe représente la moyenne de leur croissance.

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.

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 (une donnĂ©es 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 :
Affichage des virus,
Calculer des statistiques V1,
Calculer des statistiques V2,
Jeu de devinette amélioré,
EspÚces marines observées,
Affichage amélioré des virus V1,
Affichage amélioré des virus V2,
Manipulation des listes,
Manipulation d'ensemble,
Graphique 1,
Graphique 2,
Graphique 3