Python et la Programmation Orienté Objet
Pr: MAJDOUB Soufyane
Université Sidi Mohamed Ben Abdellah de Fès
[email protected] Laboratoire d’Informatique, Signaux, Automatique et
Cognitivisme
December 6, 2024
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 1 / 47
Plan
1 POO - Généralités
Notion de base: Variables, Condition, Boucle.
Les Fonctions
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 2 / 47
Installation des outils nécessaires pour travailler
avec Python
Étapes d’installation :
1 Installer Python :
• Télécharger la dernière version de Python depuis https://www.python.org.
• Suivre les instructions d’installation pour votre système d’exploitation (Windows,
macOS, Linux).
• Astuce : Cocher l’option Add Python to PATH lors de l’installation.
2 Installer un éditeur de code :
• Spyder : https://www.spyder-ide.org/.
• PyCharm : https://www.jetbrains.com/pycharm/.
• Astuce : Spyder est léger et dispose de nombreuses extensions.
3 Installer un gestionnaire d’environnements :
• pip : Installé avec Python par défaut.
• Anaconda : Une distribution complète pour Python et Jupyter Notebook
(https://www.anaconda.com/).
• Astuce : Utiliser virtualenv ou conda pour des environnements isolés.
4 Installer des bibliothèques essentielles :
• Commande : pip install numpy matplotlib pandas scikit-learn.
5 Tester l’installation :
• Ouvrir un terminal ou l’invite de commande.
• Taper python --version pour vérifier l’installation de Python.
• Créer un fichier test.py et exécuter python test.py.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 3 / 47
Les variables en Python
Définition : Une variable est un conteneur permettant de stocker des données pour les
réutiliser.
Caractéristiques des variables en Python :
• Déclaration implicite : Pas besoin de spécifier un type.
• Exemple : x = 10 (integer), y = "Bonjour" (string)
• Types dynamiques : Le type d’une variable peut changer en cours d’exécution.
• Exemple : x = 10 suivi de x = "texte" est valide.
• Convention de nommage :
• Utiliser des lettres, chiffres, (pas de caractères spéciaux ni d’espaces).
• Ne doit pas commencer par un chiffre (exemple : 1x est invalide).
• Mots-clés réservés : On ne peut pas utiliser les mots-clés de Python comme noms de
variables (exemple : if, for, return).
Exemples de déclaration de variables :
• entier = 42 (int)
• flottant = 3.14 (float)
• texte = "Python" (str)
• booleen = True (bool)
• liste = [1, 2, 3] (list)
• dictionnaire = {"clé": "valeur"} (dict)
Opérations sur les variables :
• Assignation : x = 10
• Échange : x, y = y, x
• Suppression : del x
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 4 / 47
Structures de données avancées
Exemples :
• Liste (List) : Liste ordonnée et modifiable.
• Matrice (Matrix) : Liste imbriquée représentant des tableaux
2D.
• Tuple : Liste immuable.
• Dictionnaire (Dict) : Association clé-valeur.
• Ensemble (Set) : Collection d’éléments uniques.
• Graphe (Graph) : Représentation des relations entre des
nœuds.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 5 / 47
Exemples de déclarations en Python
Syntaxe de déclaration
# Liste
list\_example = [1, 2, 3, 4]
# Matrice
matrix\_example = [[1, 2], [3, 4], [5, 6]]
# Tuple
tuple\_example = (1, 2, 3)
# Dictionnaire
dict\_example = {"clé1": "valeur1", "clé2": "valeur2"}
# Ensemble
set\_example = {1, 2, 3}
# Graphe (liste d’adjacence)
graph\_example = {
"A": ["B", "C"],
"B": ["A", "D"],
"C": ["A", "D"],
"D": ["B", "C"]
}
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 6 / 47
La Structure de données Liste (List)
Principales fonctions :
• append() : Ajouter un élément à la fin.
• insert() : Insérer un élément à un index donné.
• pop() : Supprimer et retourner le dernier élément.
• remove() : Supprimer la première occurrence d’un élément.
• sort() : Trier la liste.
• reverse() : Inverser l’ordre des éléments.
Exemple :
my_list = [3, 1, 4]
my_list.append(5) # [3, 1, 4, 5]
my_list.sort() # [1, 3, 4, 5]
my_list.pop() # Retourne 5, liste devient [1, 3
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 7 / 47
La Structure de données Matrice (Listes imbriquées)
Principales fonctions :
• Accéder à un élément : matrix[i][j].
• Itérer sur les lignes et colonnes.
Exemple :
matrix = [[1, 2], [3, 4], [5, 6]]
print(matrix[1][1]) # Retourne 4
for row in matrix:
print(row) # Affiche chaque ligne
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 8 / 47
La Structure de données : Dictionnaire (Dict)
Principales fonctions :
• get() : Récupérer la valeur associée à une clé.
• keys() : Retourne toutes les clés.
• values() : Retourne toutes les valeurs.
• items() : Retourne les paires clé-valeur.
• update() : Met à jour le dictionnaire avec un autre.
Exemple :
my_dict = {"a": 1, "b": 2}
print(my_dict.get("a")) # Retourne 1
my_dict["c"] = 3 # Ajoute {"c": 3}
print(my_dict.keys()) # Retourne dict_keys([’a’,
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 9 / 47
La Structure de données Ensemble (Set)
Principales fonctions :
• add() : Ajouter un élément.
• remove() : Supprimer un élément.
• union() : Union de deux ensembles.
• intersection() : Intersection de deux ensembles.
• difference() : Différence entre deux ensembles.
Exemple :
my_set = {1, 2, 3}
my_set.add(4) # {1, 2, 3, 4}
my_set.remove(2) # {1, 3, 4}
other_set = {3, 5}
print(my_set.union(other_set)) # {1, 3, 4, 5}
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 10 / 47
La Structure de données Graphe (Graph)
Principales représentations :
• Liste d’adjacence : {sommet: [voisins]}.
• Matrice d’adjacence : Liste imbriquée.
Exemple : Liste d’adjacence :
graph = {
"A": ["B", "C"],
"B": ["A", "D"],
"C": ["A", "D"],
"D": ["B", "C"]
}
print(graph["A"]) # Retourne [’B’, ’C’]
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 11 / 47
Affichage en Python
• print() : La méthode la plus utilisée pour afficher des données dans la console.
• Exemple : print("Bonjour, Python !")
• Affichage formaté :
• Avec l’opérateur % :
• Exemple : print("La valeur est : %d" % 42)
• Avec la méthode format() :
• Exemple : print("La somme de {0} et {1} est {2}".format(5,
10, 15))
• Avec f-strings (à partir de Python 3.6) :
• Exemple : print(f"Bonjour, {nom} !")
• repr() : Fournit une représentation lisible par la machine de l’objet.
• Exemple : print(repr("Texte avec
n une nouvelle ligne"))
• Écriture dans un fichier (redirection) :
• Exemple :
with open("output.txt", "w") as f:
print("Bonjour, fichier !", file=f)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 12 / 47
Lecture en Python
• Lecture depuis l’entrée standard : input()
• Utilisé pour lire des données fournies par l’utilisateur.
• Exemple :
nom = input("Entrez votre nom : ")
print(f"Bonjour, {nom} !")
• Lecture depuis un fichier texte :
• Ouverture et lecture ligne par ligne ou en bloc.
• Exemple :
with open("fichier.txt", "r") as f:
contenu = f.read()
print(contenu)
• Méthodes courantes :
• read() : Lit tout le contenu.
• readline() : Lit une ligne à la fois.
• readlines() : Retourne une liste de lignes.
• Lecture depuis un fichier CSV :
• Utilisation du module csv.
• Exemple :
import csv
with open("fichier.csv", "r") as f:
lecteur = csv.reader(f)
for ligne in lecteur:
print(ligne)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 13 / 47
Lecture en Python
• Lecture depuis un fichier JSON :
• Utilisation du module json.
• Exemple :
import json
with open("fichier.json", "r") as f:
donnees = json.load(f)
print(donnees)
• Lecture depuis une URL :
• Utilisation du module requests.
• Exemple :
import requests
reponse = requests.get("https://example.com")
print(reponse.text)
Remarque : Toujours gérer les exceptions lors de la lecture (try-except).
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 14 / 47
Conditions en Python
Les conditions permettent d’exécuter un bloc de code selon des tests logiques.
Syntaxe générale :
if condition1:
# Code exécuté si condition1 est vraie
elif condition2:
# Code exécuté si condition1 est fausse et condition2 est vraie
else:
# Code exécuté si toutes les conditions précédentes sont fausses
Exemple :
x = 10
if x > 0:
print("x est positif")
elif x == 0:
print("x est zéro")
else:
print("x est négatif")
Conditions imbriquées :
if x > 0:
if x % 2 == 0:
print("x est positif et pair")
else:
print("x est positif et impair")
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 15 / 47
Conditions en Python
Opérateurs logiques utilisés dans les conditions :
• Comparaison : ==, !=, >, <, >=, <=
• Logiques : and, or, not
• Appartenance : in, not in
• Identité : is, is not
Conditions simplifiées : (opérateur ternaire)
message = "x est positif" if x > 0 else "x est négatif ou zéro"
print(message)
Remarque : L’indentation est essentielle en Python pour structurer les blocs de code.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 16 / 47
Répétition en Python
La boucle for permet de parcourir des éléments d’une séquence (liste, tuple, chaı̂ne,
etc.).
Syntaxe générale :
for variable in sequence:
# Code à exécuter pour chaque élément
Exemples :
• Parcourir une liste :
fruits = ["pomme", "banane", "cerise"]
for fruit in fruits:
print(fruit)
• Utiliser range() pour générer des nombres :
for i in range(5):
print(i) # Affiche 0, 1, 2, 3, 4
• Parcourir une chaı̂ne de caractères :
for lettre in "Python":
print(lettre)
• Parcourir un dictionnaire :
dictionnaire = {"a": 1, "b": 2}
for cle, valeur in dictionnaire.items():
print(f"Clé : {cle}, Valeur : {valeur}")
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 17 / 47
Répétition en Python
Instructions utiles :
• break : Sortir de la boucle prématurément.
for i in range(10):
if i == 5:
break # Arrête la boucle
print(i)
• continue : Passer à l’itération suivante.
for i in range(5):
if i == 2:
continue # Ignore 2
print(i)
• else : Code exécuté si la boucle se termine normalement.
for i in range(3):
print(i)
else:
print("Boucle terminée")
Remarque : En Python, la boucle for fonctionne avec des itérateurs, ce qui la rend très
flexible et puissante.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 18 / 47
Exercice 1
Affichage des nombres pairs
Écrivez un programme Python qui affiche tous les nombres pairs
de 1 à 20 en utilisant une boucle for.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 19 / 47
Exercice 1
Affichage des nombres pairs
Écrivez un programme Python qui affiche tous les nombres pairs
de 1 à 20 en utilisant une boucle for.
Solution :
for i in range(1, 21):
if i % 2 == 0:
print(i)
Explication : La boucle parcourt tous les nombres de 1 à 20, et la
condition i % 2 == 0 permet de filtrer les nombres pairs.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 19 / 47
Exercice 2
Affichage des nombres pairs
Écrivez un programme Python pour calculer la somme des
éléments d’une liste donnée : [3, 5, 7, 9, 11]. Utilisez une
boucle for.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 20 / 47
Exercice 2
Affichage des nombres pairs
Écrivez un programme Python pour calculer la somme des
éléments d’une liste donnée : [3, 5, 7, 9, 11]. Utilisez une
boucle for.
Solution :
nombres = [3, 5, 7, 9, 11]
somme = 0
for nombre in nombres:
somme += nombre
print(somme)
Explication : La boucle parcourt chaque élément de la liste et
l’ajoute à la variable somme.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 20 / 47
Exercice 3
Affichage des nombres pairs
Écrivez un programme Python qui calcule le produit des éléments
de la liste suivante : [2, 4, 6, 8]. Utilisez une boucle for.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 21 / 47
Exercice 3
Affichage des nombres pairs
Écrivez un programme Python qui calcule le produit des éléments
de la liste suivante : [2, 4, 6, 8]. Utilisez une boucle for.
Solution :
nombres = [2, 4, 6, 8]
produit = 1
for nombre in nombres:
produit *= nombre
print(produit)
Explication : La boucle multiplie successivement chaque élément
de la liste à la variable produit, initialisée à 1.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 21 / 47
Exercice 4
Affichage des nombres pairs
Écrivez un programme Python qui compte le nombre de voyelles
(a, e, i, o, u) dans la chaı̂ne suivante : "programmation".
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 22 / 47
Exercice 4
Affichage des nombres pairs
Écrivez un programme Python qui compte le nombre de voyelles
(a, e, i, o, u) dans la chaı̂ne suivante : "programmation".
Solution :
chaine = "programmation"
voyelles = "aeiou"
compteur = 0
for lettre in chaine:
if lettre in voyelles:
compteur += 1
print(compteur)
Explication : La boucle parcourt chaque caractère de la chaı̂ne et
vérifie s’il est présent dans la chaı̂ne des voyelles. Si oui, le
compteur est incrémenté.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 22 / 47
Exercice 5
Affichage des nombres pairs
Écrivez un programme Python pour afficher les 10 premiers termes
de la suite de Fibonacci. La suite de Fibonacci est définie comme
suit :
F (n) = F (n − 1) + F (n − 2) avec F (0) = 0, F (1) = 1
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 23 / 47
Exercice 5
Affichage des nombres pairs
Écrivez un programme Python pour afficher les 10 premiers termes
de la suite de Fibonacci. La suite de Fibonacci est définie comme
suit :
F (n) = F (n − 1) + F (n − 2) avec F (0) = 0, F (1) = 1
Solution :
n = 10
a, b = 0, 1
print(a, b, end=" ")
for _ in range(n - 2):
a, b = b, a + b
print(b, end=" ")
Explication : - Les deux premières valeurs sont initialisées. - La boucle
calcule chaque nouveau terme en additionnant les deux précédents.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 23 / 47
Exercice 6
Affichage des nombres pairs
Écrivez un programme Python qui trie une liste de nombres sans
utiliser les fonctions intégrées comme sort() ou sorted().
Exemple : Liste donnée : [34, 10, 64, 25, 12] Liste triée :
[10, 12, 25, 34, 64]
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 24 / 47
Exercice 6
Affichage des nombres pairs
Écrivez un programme Python qui trie une liste de nombres sans
utiliser les fonctions intégrées comme sort() ou sorted().
Exemple : Liste donnée : [34, 10, 64, 25, 12] Liste triée :
[10, 12, 25, 34, 64]
Solution :
nombres = [34, 10, 64, 25, 12]
for i in range(len(nombres)):
for j in range(i + 1, len(nombres)):
if nombres[i] > nombres[j]:
nombres[i], nombres[j] = nombres[j], nombres[i]
print(nombres)
Explication : - Cette implémentation utilise un tri par sélection. - Les
deux boucles comparent les éléments et les échangent pour les placer
dans le bon ordre.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 24 / 47
Exercice7 : Création et manipulation d’un
dictionnaire
Objectif : Apprendre à manipuler les dictionnaires en Python.
Énoncé :
1 Créez un dictionnaire contenant les noms et âges de 5
personnes. Exemple : "Ali": 25, "Sara": 30.
2 Ajoutez une nouvelle personne au dictionnaire.
3 Supprimez une personne spécifique du dictionnaire.
4 Affichez tous les noms dans le dictionnaire.
5 Affichez tous les âges dans le dictionnaire.
6 Trouvez l’âge moyen des personnes.
7 Vérifiez si un nom donné (par exemple ”Omar”) est dans le
dictionnaire.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 25 / 47
Solution
# 1. Création d’un dictionnaire
personnes ={"Ali": 25,"Sara": 30,"Omar": 22,"Yasmine": 27, "Kamal": 29}
# 2. Ajout d’une nouvelle personne
personnes["Layla"] = 24
# 3. Suppression d’une personne
del personnes["Omar"]
# 4. Affichage de tous les noms
print("Noms :", list(personnes.keys()))
# 5. Affichage de tous les âges
print("Âges :", list(personnes.values()))
# 6. Calcul de l’âge moyen
moyenne_age = sum(personnes.values()) / len(personnes)
print(f"Âge moyen: {moyenne_age}")
# 7. Vérification si un nom est présent
nom_recherche = "Omar"
if nom_recherche in personnes:
print(f"{nom_recherche} est dans le dictionnaire.")
else:
print(f"{nom_recherche} n’est pas dans le dictionnaire.")
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 26 / 47
Les Fonctions en Python
Définition : Une fonction est un bloc de code qui exécute une tâche spécifique et qui peut
être réutilisé. Les fonctions permettent de rendre le code plus modulaire, lisible et
réutilisable.
Syntaxe de base :
Syntaxe
def nom fonction(parametres):
# Corps de la fonction
return valeur retour
Exemple : Addition de deux nombres
def addition(a, b):
return a + b
resultat = addition(3, 4)
print(resultat) # Affiche 7
Appels de fonction :
• addition(3, 4) : Passe 3 et 4 comme arguments à la fonction.
• La fonction retourne la somme de ces deux nombres.
Valeurs par défaut :
def multiplication(a, b=2):
return a * b
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 27 / 47
Exercice 1
Énoncé:
Écrivez une fonction check age() qui demande à l’utilisateur de
saisir son âge et vérifie s’il est majeur (18 ans ou plus).
Si l’utilisateur est majeur, la fonction doit afficher ”Vous êtes
majeur”, sinon elle doit afficher ”Vous êtes mineur”.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 28 / 47
Exercice 1
Énoncé:
Écrivez une fonction check age() qui demande à l’utilisateur de
saisir son âge et vérifie s’il est majeur (18 ans ou plus).
Si l’utilisateur est majeur, la fonction doit afficher ”Vous êtes
majeur”, sinon elle doit afficher ”Vous êtes mineur”.
Solution:
def check_age():
age = int(input("Entrez votre âge: "))
if age >= 18:
print("Vous êtes majeur")
else:
print("Vous êtes mineur")
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 28 / 47
Exercice 2
Énoncé:
Écrivez une fonction sum numbers() qui demande à l’utilisateur de
saisir 5 nombres, puis calcule la somme de ces nombres et l’affiche.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 29 / 47
Exercice 2
Énoncé:
Écrivez une fonction sum numbers() qui demande à l’utilisateur de
saisir 5 nombres, puis calcule la somme de ces nombres et l’affiche.
Solution:
def sum_numbers():
total = 0
for i in range(5):
number = int(input(f"Entrez le nombre {i+1}: "))
total += number
print("La somme des nombres est:", total)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 29 / 47
Exercice 3
Énoncé:
Écrivez une fonction double list() qui prend une liste de
nombres en entrée et retourne une nouvelle liste avec chaque
élément doublé.
Vous devez demander à l’utilisateur de saisir les éléments de la
liste.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 30 / 47
Exercice 3
Énoncé:
Écrivez une fonction double list() qui prend une liste de
nombres en entrée et retourne une nouvelle liste avec chaque
élément doublé.
Vous devez demander à l’utilisateur de saisir les éléments de la
liste.
Solution:
def double_list():
numbers = []
for i in range(5):
number = int(input(f"Entrez le nombre {i+1}: "))
numbers.append(number)
doubled = [num * 2 for num in numbers]
print("La liste doublée est:", doubled)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 30 / 47
Exercice 4
Énoncé:
Écrivez une fonction create dict() qui demande à l’utilisateur de
saisir des noms et des âges, puis les ajoute dans un dictionnaire
sous la forme {’nom’: ’âge’}.
La fonction doit ensuite afficher le dictionnaire complet.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 31 / 47
Exercice 4
Énoncé:
Écrivez une fonction create dict() qui demande à l’utilisateur de
saisir des noms et des âges, puis les ajoute dans un dictionnaire
sous la forme {’nom’: ’âge’}.
La fonction doit ensuite afficher le dictionnaire complet.
Solution:
def create_dict():
people = {}
while True:
name = input("Entrez le nom (ou ’exit’ pour quitter):
if name.lower() == ’exit’:
break
age = int(input(f"Entrez l’âge de {name}: "))
people[name] = age
print("Le dictionnaire des personnes est:", people)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 31 / 47
Exercice 5
Énoncé:
Écrivez une fonction guess number() qui génère un nombre aléatoire entre 1 et 100, puis
demande à l’utilisateur de deviner ce nombre.
La fonction doit afficher si le nombre est trop grand, trop petit ou correct. L’utilisateur a un
nombre limité de tentatives.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 32 / 47
Exercice 5
Énoncé:
Écrivez une fonction guess number() qui génère un nombre aléatoire entre 1 et 100, puis
demande à l’utilisateur de deviner ce nombre.
La fonction doit afficher si le nombre est trop grand, trop petit ou correct. L’utilisateur a un
nombre limité de tentatives.
Solution:
import random
def guess_number():
number_to_guess = random.randint(1, 100)
attempts = 0
while attempts < 5:
guess = int(input("Devinez un nombre entre 1 et 100: "))
if guess < number_to_guess:
print("Trop petit!")
elif guess > number_to_guess:
print("Trop grand!")
else:
print("Bravo, vous avez trouvé le nombre!")
break
attempts += 1
if attempts == 5:
print(f"Le nombre était {number_to_guess}")
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 32 / 47
Exercice 6 : Gestion d’un inventaire
Énoncé :
• Un magasin gère ses stocks dans un dictionnaire où les clés sont les noms des
produits et les valeurs sont leurs quantités :
{’pomme’: 10, ’banane’: 15, ’orange’: 8}
• Réalisez les étapes suivantes :
1 Affichez tous les produits et leurs quantités.
2 Permettez à l’utilisateur d’acheter un produit. Diminuez la
quantité correspondante et affichez un message si le produit est
en rupture de stock.
3 Ajoutez un nouveau produit au stock avec sa quantité.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 33 / 47
Correction : Exercice 6
Solution :
# Dictionnaire de stocks
stocks = {’pomme’: 10, ’banane’: 15, ’orange’: 8}
# a. Afficher les produits et quantités
print("Stock actuel :")
for produit, quantite in stocks.items():
print(f"{produit}: {quantite}")
# b. Acheter un produit
produit_demande = input("Quel produit voulez-vous acheter ? ")
if produit_demande in stocks:
stocks[produit_demande] -= 1
if stocks[produit_demande] <= 0:
print(f"{produit_demande} est maintenant en rupture de stock.")
else:
print(f"{produit_demande} n’est pas disponible.")
# c. Ajouter un nouveau produit
nouveau_produit = input("Entrez le nom d’un nouveau produit à ajouter:")
quantite = int(input(f"Quantité de {nouveau_produit} : "))
stocks[nouveau_produit] = quantite
print("Nouveau stock :", stocks)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 34 / 47
Exercice 7 : Gestion des étudiants et leurs notes
Énoncé :
• Vous avez un dictionnaire contenant les noms des étudiants et leurs listes de notes :
{’Alice’: [15, 14, 13], ’Bob’: [12, 10, 9], ’Clara’: [16, 18, 20]}
• Répondez aux questions suivantes :
1 Calculez la moyenne des notes de chaque étudiant.
2 Affichez les noms des étudiants ayant une moyenne supérieure
à 14.
3 Ajoutez un nouvel étudiant avec ses notes au dictionnaire.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 35 / 47
Correction : Exercice 7
Solution :
# Dictionnaire des étudiants et leurs notes
etudiants = {’Alice’: [15, 14, 13], ’Bob’: [12, 10, 9],
’Clara’: [16, 18, 20]}
# a. Calculer la moyenne
for nom, notes in etudiants.items():
moyenne = sum(notes) / len(notes)
print(f"{nom}: Moyenne = {moyenne:.2f}")
# b. Afficher les étudiants ayant une moyenne > 14
print("Étudiants avec moyenne > 14 :")
for nom, notes in etudiants.items():
if sum(notes) / len(notes) > 14:
print(nom)
# c. Ajouter un nouvel étudiant
nouveau_nom = input("Entrez le nom d’un nouvel étudiant : ")
notes = list(map(int, input("Entrez ses notes séparées par des
espaces : ").split()))
etudiants[nouveau_nom] = notes
print("Liste mise à jour :", etudiants)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 36 / 47
Exercice 8 : Analyse d’une base de données de
produits
Énoncé :
• Vous travaillez avec une liste de dictionnaires représentant des produits :
[
{’nom’: ’pomme’, ’categorie’: ’fruit’, ’prix’: 3},
{’nom’: ’carotte’, ’categorie’: ’legume’, ’prix’: 2},
{’nom’: ’banane’, ’categorie’: ’fruit’, ’prix’: 1.5}
]
• Répondez aux questions suivantes :
1 Affichez tous les produits appartenant à une catégorie donnée.
2 Calculez le coût total des produits dans une catégorie.
3 Ajoutez un nouveau produit à la base de données.
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 37 / 47
Correction : Exercice 8
Solution :
# Liste des produits
produits = [{’nom’: ’pomme’, ’categorie’: ’fruit’, ’prix’: 3},
{’nom’: ’carotte’, ’categorie’: ’legume’, ’prix’: 2},
{’nom’: ’banane’, ’categorie’: ’fruit’, ’prix’: 1.5}]
# a. Afficher les produits d’une catégorie
categorie_demande = input("Entrez une catégorie : ")
for produit in produits:
if produit[’categorie’] == categorie_demande:
print(produit)
# b. Calculer le coût total d’une catégorie
total = sum(produit[’prix’] for produit in produits if
produit[’categorie’] == categorie_demande)
print(f"Coût total pour la catégorie {categorie_demande} : {total}")
# c. Ajouter un nouveau produit
nouveau_produit = {’nom’: input("Nom du produit : "),
’categorie’: input("Catégorie : "),
’prix’: float(input("Prix : "))}
produits.append(nouveau_produit)
print("Base de données mise à jour :", produits)
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 38 / 47
Exercice 9 : Fonction pour filtrer des éléments
Énoncé :
• Écrivez une fonction ‘filtrer par categorie‘ qui prend une liste de dictionnaires
représentant des produits et une catégorie, et retourne une liste contenant
uniquement les produits appartenant à cette catégorie.
• Exemple d’entrée :
produits = [
{’nom’: ’pomme’, ’categorie’: ’fruit’, ’prix’: 3},
{’nom’: ’carotte’, ’categorie’: ’legume’, ’prix’: 2},
{’nom’: ’banane’, ’categorie’: ’fruit’, ’prix’: 1.5}
]
categorie = ’fruit’
• Résultat attendu :
[{’nom’: ’pomme’, ’categorie’: ’fruit’, ’prix’: 3},
{’nom’: ’banane’, ’categorie’: ’fruit’, ’prix’: 1.5}]
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 39 / 47
Correction : Exercice 9
Solution :
def filtrer_par_categorie(produits, categorie):
resultat = []
for produit in produits:
if produit[’categorie’] == categorie:
resultat.append(produit)
return resultat
# Exemple d’utilisation
produits = [
{’nom’: ’pomme’, ’categorie’: ’fruit’, ’prix’: 3},
{’nom’: ’carotte’, ’categorie’: ’legume’, ’prix’: 2},
{’nom’: ’banane’, ’categorie’: ’fruit’, ’prix’: 1.5}
]
categorie = ’fruit’
print(filtrer_par_categorie(produits, categorie))
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 40 / 47
Exercice 10 : Moyenne des notes des étudiants
Énoncé :
• Écrivez une fonction ‘calculer moyennes‘ qui prend un dictionnaire contenant des
noms d’étudiants comme clés et leurs listes de notes comme valeurs, et retourne un
nouveau dictionnaire où chaque étudiant est associé à sa moyenne.
• Exemple d’entrée :
etudiants = {
’Alice’: [15, 14, 13],
’Bob’: [12, 10, 9],
’Clara’: [16, 18, 20]
}
• Résultat attendu :
{’Alice’: 14.0, ’Bob’: 10.33, ’Clara’: 18.0}
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 41 / 47
Correction : Exercice 10
Solution :
def calculer_moyennes(etudiants):
moyennes = {}
for nom, notes in etudiants.items():
moyennes[nom] = round(sum(notes) / len(notes), 2)
return moyennes
# Exemple d’utilisation
etudiants = {
’Alice’: [15, 14, 13],
’Bob’: [12, 10, 9],
’Clara’: [16, 18, 20]
}
print(calculer_moyennes(etudiants))
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 42 / 47
Exercice 11 : Recherche dans un dictionnaire
Énoncé :
• Écrivez une fonction ‘rechercher etudiant‘ qui prend un dictionnaire contenant des
noms d’étudiants comme clés et leurs listes de notes comme valeurs, ainsi qu’un nom
d’étudiant. La fonction doit retourner ses notes ou un message indiquant qu’il n’existe
pas.
• Exemple d’entrée :
etudiants = {
’Alice’: [15, 14, 13],
’Bob’: [12, 10, 9],
’Clara’: [16, 18, 20]
}
rechercher_etudiant(etudiants, ’Alice’)
• Résultat attendu :
[15, 14, 13]
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 43 / 47
Correction : Exercice 11
Solution :
def rechercher_etudiant(etudiants, nom):
if nom in etudiants:
return etudiants[nom]
else:
return f"{nom} n’est pas dans la liste des étudiants."
# Exemple d’utilisation
etudiants = {
’Alice’: [15, 14, 13],
’Bob’: [12, 10, 9],
’Clara’: [16, 18, 20]
}
print(rechercher_etudiant(etudiants, ’Alice’))
print(rechercher_etudiant(etudiants, ’David’))
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 44 / 47
Exercice 12 : Fusionner deux dictionnaires de stocks
Énoncé :
• Écrivez une fonction ‘fusionner stocks‘ qui prend deux dictionnaires représentant les
stocks de deux magasins. La fonction retourne un nouveau dictionnaire combinant les
deux, en additionnant les quantités pour les produits identiques.
• Exemple d’entrée :
stocks1 = {’pomme’: 10, ’banane’: 15, ’orange’: 8}
stocks2 = {’banane’: 5, ’poire’: 12, ’pomme’: 3}
• Résultat attendu :
{’pomme’: 13, ’banane’: 20, ’orange’: 8, ’poire’: 12}
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 45 / 47
Correction : Exercice 12
Solution :
def fusionner_stocks(stocks1, stocks2):
fusion = stocks1.copy()
for produit, quantite in stocks2.items():
if produit in fusion:
fusion[produit] += quantite
else:
fusion[produit] = quantite
return fusion
# Exemple d’utilisation
stocks1 = {’pomme’: 10, ’banane’: 15, ’orange’: 8}
stocks2 = {’banane’: 5, ’poire’: 12, ’pomme’: 3}
print(fusionner_stocks(stocks1, stocks2))
MAJDOUB Soufyane (USMBA) POO en python December 6, 2024 46 / 47
Fin
Questions? Commentaires?