Support de Cours de Programmation Orientee Objet Python
Support de Cours de Programmation Orientee Objet Python
1. Introduction à Python
- Historique de Python
- Installation de Python
- Premier programme en Python
3. Fonctions et modules
- Définition et utilisation des fonctions
- Création de modules et importation de modules externes
4. Manipulation de fichiers
- Lecture et écriture de fichiers texte
- Gestion des fichiers CSV et JSON
18 février 2024 1
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
1. INTRODUCTION A PYTHON
1. Historique de Python :
2. Installation de Python
Maintenant que Python est installé, vous pouvez écrire votre premier programme.
Voici un exemple simple .
18 février 2024 2
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Une fois que PyCharm est configuré et prêt à l'emploi, vous pouvez créer un nouveau
projet Python, écrire du code, exécuter des programmes et bénéficier des nombreuses
fonctionnalités offertes par cet IDE.
Exercice 1
Écrire un programme Python qui permet d’afficher le message Bonjour.
18 février 2024 3
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Réponse
print("Bonjour")
Exercice 2
Écrire un programme Python permettant de saisir deux nombres et d'afficher leur
produit.
Réponse
m = float(input(" Entrer un nombre:"))
n = float(input(" Entrer un nombre:"))
p = m*n
print("le produit de",m,"et",n,"=",p)
Exercice 3
Écrire un programme Python qui permet d'échanger le contenu de deux entiers A et
B saisis par l'utilisateur. et afficher ces entiers après l’échange.
Réponse
m = int(input(" Entrer un Entier m :"))
n = int(input(" Entrer un Entrer n :"))
print("Avant l'echange: m =",m,"et n =",n)
m,n = n,m
print("Apres l'echange: m =",m,"et n =",n)
Nous avons aussi les opérateurs logiques (and, or, not) pour effectuer des opérations sur les
données.
3. STRUCTURES DE CONTROLE :
Les boucles (for, while) et les instructions conditionnelles (if, else, elif) permettent de
contrôler le flux d'exécution du programme.
Les boucles (for, while) :
Exemple 4 :
18 février 2024 4
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Réponse
N = int(input("Entrer un Entier :"))
if N%2==0 :
print(N,"est pair")
else :
print(N,"est impair")
Exercice 5
Écrire un programme Python qui permet d'afficher le plus grand de trois entiers saisis au
clavier.
Réponse
Exercice 6
Écrire un programme Python qui permet d'évaluer une note saisi au clavier (si la
note est supérieur à 10 alors il affiche validé sinon non validé (NB : la note comprise
entre 0 et 20 ).
Réponse
Exercice 7
18 février 2024 5
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 8
Écrire un programme Python qui permet de calculer la valeur absolue d'un entier
saisi par l'utilisateur.
Réponse
A = float(input("Entrer un nombre :"))
if A < 0 :
print("La valeur absolue de",A,"est",-A)
else :
print("La valeur absolue de",A,"est",A)
Exercice 9
Écrire un programme Python qui permet de calculer la moyenne de trois entiers saisis
par l'utilisateur.
Réponse
A = int(input("Entrer un Entier A :"))
B = int(input("Entrer un Entier B :"))
C = int(input("Entrer un Entier C :"))
Moyenne = (A+B+C)/3
print("La Moyenne est ",Moyenne)
Exercice 10
Une boutique propose à ces clients, une réduction de 15% pour les montants d’achat
supérieurs à 200 dollar. Écrire un programme Python permettant de saisir le prix total
HT et de calculer le montant TTC en prenant en compte la réduction et la TVA=20%.
Réponse
Prix_HT = float(input("Entrer le montant HT:"))
Prix_TTC = Prix_HT + Prix_HT*0.2
if Prix_TTC > 200 :
Prix_TTC = Prix_TTC - Prix_TTC*0.15
18 février 2024 6
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 11
Le centre de photocopie facture 0,25 fc pour les 10 premières photocopies, 0,20 fc les
vingt suivantes et 0,10 fc pour plus de vingt. Ecrire un programme Python qui
demande à l’utilisateur de saisir le nombre de photocopies effectuées et qui affiche la
facture correspondante.
Réponse
Nb_copies = int(input("Entrer le nombre de copies :"))
if Nb_copies >20 :
prix = Nb_copies *0.10
if Nb_copies <=20 and Nb_copies > 10 : prix = Nb_copies *0.20
if Nb_copies <=10 and Nb_copies > 0 : prix = Nb_copies *0.25
print("Le prix total est: ",prix," Dh")
Exercice 12
Écrire un programme Python qui demande l'âge d'un enfant et permet d'informer de
sa catégorie sachant que les catégories sont les suivantes:
"poussin de 6 a 7 ans"
"pupille de 8 a 9 ans "
"minime de 10 a 11 ans "
" cadet après 12 ans ".
Réponse
age = float(input("Entrer votre age :"))
if age >=12 :
print("Vous etes cadet")
elif age >=10 and age <=11 :
print("Vous etes minime")
elif age >=8 and age <=9 :
print("Vous etes pupille")
elif age >=6 and age <=7 :
print("Vous etes poussin")
else:
print("votre age inférieur à 6 ans")
Exercice 13
Écrire un programme Python permettant d’afficher le mois en lettre selon le numéro
saisi au clavier. ( Si l’utilisateur tape 1 le programme affiche janvier, si
2 affiche février , si 3 affiche mars... )
18 février 2024 7
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Réponse
mois = int(input("Entrer le Mois :"))
if mois == 1 :
print("Janvier")
elif mois == 2 :
print("février")
elif mois == 3 :
print("Mars")
elif mois == 4 :
print("Avril")
elif mois == 5 :
print("Mai")
elif mois == 6 :
print("Juin")
elif mois == 7 :
print("Juille")
elif mois == 8 :
print("Aout")
elif mois == 9 :
print("Septembre")
elif mois == 10 :
print("Octobre")
elif mois == 11 :
print("Novembre")
elif mois == 12 :
print("décembre")
else:
print("Le mois incorret !!!!"
La boucle for permet d’itérer sur une séquence (comme une liste, tuple, un dictionnaire, etc.)
et d’exécuter un bloc de code pour chaque élément de la séquence.
Dans cet exemple, la boucle for itère sur les valeurs de 0 à 4 (la fonction range(5) génère une
séquence de nombre de 0 à 4) et affiche chaque valeur.
Exercice 18
Écrire un programme Python qui permet de calculer la somme S=1+2+3+...+ 10.
Utilisant la boucle for.
18 février 2024 8
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Réponse
S=0
for i in range(1,11):
S=S+i
print("La somme de 1 à 10 est:",S)
Exercice 19
Écrire un programme Python qui permet de calculer la somme S=1+2+3+4+….+ N.
où N saisi au clavier par l’utilisateur.
Réponse
S=0
n=int(input("Donner un entier :"))
for i in range (1,n+1):
S=S+i
print("La somme des nombres entre",1,"et",n,"=",S)
Exercice 20
Écrire un programme Python qui permet d'afficher la table de multiplication de 5.
Réponse
Exercice 21
Écrire un programme Python qui permet d'afficher la table de multiplication d’un
entier saisie par l’utilisateur.
Réponse
Exercice 22
Écrivez un programme Python, entrez deux nombres de l'utilisateur et trouvez le plus
grand diviseur commun.
Réponse
18 février 2024 9
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 23
Écrivez un programme Python pour entrer un nombre et vérifiez si le nombre est
parfait ou non. Un nombre parfait est un entier positif qui est égal à la somme de ses
diviseurs positifs appropriés.
Par exemple: 6 est le premier nombre parfait
Les diviseurs appropriés de 6 sont 1, 2, 3.
Somme de ses diviseurs stricts = 1 + 2 + 3 = 6.
Par conséquent, 6 est un nombre parfait.
Réponse
if (somme == num):
print(num, "est un nombre parfait")
else:
print(num, "n'est pas un nombre parfait")
Exercice 24
Écrivez un programme Python pour saisir un nombre et calculer sa factorielle à l'aide
de la boucle for.
La factorielle d'un nombre "n" est le produit de tous les entiers positifs inférieurs ou
égaux à n. Il est noté n!.
Par exemple, factorielle de 5!= 1*2*3*4*5= 120
Réponse
18 février 2024 10
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
break
if (estPremier == 1):
print(num, " est premier")
else:
print(num, " n'est pas premier")
Boucle while :
La boucle while permet d’exécuter un bloc de code tant qu’une condition spécifiée est vraie.
i=0
while i<5 :
print(i)
i+=1
Dans cet exemple, le code à l’intérieur de la boucle while sera exécuté tant que la variable i
est inférieur à 5. A chaque interaction, la valeur de i est augmentée de 1 à l’aide de opérateur
+=.
Exercice 14
Écrire un programme Python qui permet d'afficher le message "Bonsoir" 10 fois.
Utilisant la boucle while.
Réponse
i=1;
while i <= 10:
print("Bonsoir")
i=i+1
Exercice 15
Écrire un programme Python permettant de calculer la somme S= 1+2+3+...+ 10.
Utilisant la boucle while.
Réponse
i=1
S=0
while i <= 10 :
S=S+i
i=i+1
print("La somme de 1 à 10 est:",S)
18 février 2024 11
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 16
Écrire un programme Python permettant de calculer la somme S=1+2+3+...+ N, où
N saisi par l’utilisateur. Utilisant la boucle while.
Réponse
i=1
S=0
N = int(input("Donner un entier:"))
while i <= N :
S=S+i
i=i+1
print("La somme de 1 à ",N," est:",S)
Exercice 17
Écrire un programme Python qui permet d'afficher le message "bonjour" 10 fois .
Utilisant la boucle for.
Réponse
for i in range(10) :
print("Bonjour")
Exercice 25
Écrivez un programme Python pour afficher tous les nombres impairs de 1 à n en
utilisant la boucle for et while.
Réponse
Exercice 26
Écrivez un programme Python pour entrer un nombre de l'utilisateur et comptez le
nombre de chiffres dans l'entier donné en utilisant une boucle.
Réponse
num = int(input("Saisir un nombre : "))
compteur = 0
while (num != 0):
18 février 2024 12
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
compteur += 1
num //= 10
print("Nombre de chiffres : ",compteur)
Exercice 27
Écrivez un programme Python pour saisir un nombre de l'utilisateur et recherchez le
premier et le dernier chiffre d'un nombre en utilisant une boucle.
Répons
n = int(input("Saisir un nombre : "))
dernier = n % 10
premier = n
while(premier >= 10):
premier = premier //10
print("Premier chiffre = ", premier)
print("Dernier chiffre = ", dernier)
Exercice 28
Écrire un programme Python qui permet d'inverser les chiffres d'un entier N saisi par
l'utilisateur. par exemple N=35672 le résultat affiché doit être 27653
Réponse
n=int(input("donner un entier : "))
r=0
while(n>0):
r = r * 10
r = r+ n%10
n = int( n/10)
print(r)
Exercice 29
Écrivez un programme Python pour saisir un nombre et calculer la somme de ses
chiffres en utilisant la boucle for.
Réponse
num = int(input("Saisir un nombre : "))
somme = 0
while (num != 0):
somme += num % 10
num = num // 10
print("Somme de chiffres = ", somme)
Exercice 30
Écrivez un programme Python pour saisir le numéro de l'utilisateur et vérifiez que le
numéro est palindrome ou non, en utilisant une boucle.
Réponse
n = int(input("Saisir un nombre : "))
18 février 2024 13
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
num = n
inverse = 0
while(n != 0):
inverse = (inverse * 10) + (n % 10)
n //= 10
if(inverse == num):
print(num, " est palindrome.")
else:
print(num, " n'est pas palindrome.")
Exercice 31
Écrivez un programme Python pour déclarer et initialiser un tableau, puis saisissez ses
éléments à partir de l'utilisateur et affichez le tableau.
Réponse
Exercice 32
Écrivez un programme Python pour déclarer un tableau, puis saisissez ses éléments
par l'utilisateur et affichez tous les éléments négatifs.
Réponse
Exercice 33
Écrire un programme Python pour déclarer un tableau, puis saisir ses éléments à
partir de l'utilisateur et trouver la somme des éléments du tableau
Réponse
18 février 2024 14
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
somme=0
for i in range(N):
somme = somme + tab[i]
print("Somme de tous les éléments du tableau = ",somme)
Exercice 34
Écrire un programme Python pour déclarer un tableau, puis saisir ses éléments à
partir de l'utilisateur et rechercher les éléments maximum et minimum dans le
tableau.
Réponse
Exercice 35
Écrivez un programme Python pour déclarer un tableau, puis saisissez ses éléments à
partir de l'utilisateur et recherchez l'élément le plus grand et le deuxième dans ce
tableau.
Réponse
18 février 2024 15
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 36
Écrivez un programme Python pour déclarer un tableau, puis saisissez ses éléments à
partir de l'utilisateur et comptez le nombre d'éléments pairs et impairs dans ce
tableau.
Réponse
Exercice 37
Écrivez un programme Python pour déclarer deux tableaux, puis entrez les éléments
du premier tableau de l'utilisateur et copiez tous ses éléments dans le deuxième
tableau.
Réponse
18 février 2024 16
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 38
Créez un programme Python qui crée et initialise un tableau, puis insère un élément à
la position spécifiée dans ce tableau (de 0 à N-1).
Pour insérer un nouvel élément dans le tableau, déplacez les éléments de la position
d'insertion donnée vers une position vers la droite.
Réponse
Exercice 39
Créez un programme Python qui crée et initialise un tableau, puis supprimez un
élément de ce tableau à la position spécifiée (de 0 à N-1).
Pour supprimer un élément du tableau, déplacez les éléments juste après la position
donnée vers une position à gauche et réduisez la taille du tableau.
Réponse
18 février 2024 17
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
N-=1
for i in range(N):
print(tab[i])
Exercice 40
Créez un programme Python qui crée et initialise un tableau, puis trouve la fréquence
de chaque élément de ce tableau.
Réponse
N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
freq=[0]*(N)
for i in range(N):
tab[i]=int(input("Saisir l'élement {0} : ".format(i+1)))
freq[i] = -1
for i in range(N):
cpt = 1
for j in range(N):
if((i!=j) and (tab[i]==tab[j])):
cpt+=1
freq[i] = cpt
for i in range(N):
if(freq[i] != 0):
print(tab[i] , " se produit " , freq[i] , " fois")
Exercice 41
Créez un programme Python qui crée et initialise un tableau, puis affichez tous les
éléments uniques de ce tableau
Idée: utiliser un tableau de fréquences
Réponse
for i in range(N):
cpt = 1
for j in range(N):
if((i!=j) and (tab[i]==tab[j])):
cpt+=1
freq[i] = cpt
18 février 2024 18
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
for i in range(N):
if(freq[i] == 1):
print(tab[i] , end=" ")
Exercice 42
Créez un programme Python qui crée et initialise un tableau, puis comptez les
éléments en double dans ce tableau.
Réponse
N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
for i in range(N):
tab[i]=int(input("Saisir l'élement {0} : ".format(i+1)))
cpt=0
for i in range(N):
for j in range(i+1,N):
if (tab[i] == tab[j]):
cpt+=1
break
print("Nombre total d'éléments en double trouvés dans le tableau = " , cpt)
Exercice 43
Créez un programme Python qui crée et initialise un tableau, puis supprimez les
éléments en double dans ce tableau.
Réponse
Exercice 44
Créez un programme qui crée et initialise un tableau, puis inversez ce tableau sans
utiliser un tableau supplémentaire.
Réponse
18 février 2024 19
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
4. FONCTIONS ET MODULES
Les fonctions permettent d'encapsuler un bloc de code pour le réutiliser à plusieurs endroits
dans un programme. Les modules sont des fichiers contenant des fonctions, des classes et des
variables qui peuvent être importés dans d'autres programmes. Au cours de ce programme,
nous explorerons en détail ces concepts fondamentaux de Python ainsi que d'autres sujets
avancés tels que la programmation orientée objet, la gestion des exceptions, les bibliothèques
standard et l'interface graphique.
18 février 2024 20
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
5. MANIPULATION DE FICHIERS
En explorant ces sujets avancés, vous pourrez approfondir votre compréhension de Python et
développer des compétences pour créer des applications plus robustes et flexibles.
La bibliothèque standard de Python est une collection de modules intégrés qui offrent un
large éventail de fonctionnalités pour diverses tâches de programmation. Parmi ces modules,
on trouve des outils pour le traitement de fichiers, la manipulation de chaînes, la gestion des
exceptions, l'accès au système d'exploitation, les opérations mathématiques, la gestion des
dates et heures, etc. Ces modules sont disponibles dès l'installation de Python et peuvent être
utilisés sans avoir besoin de télécharger ou d'installer quoi que ce soit de supplémentaire.
D'autre part, les modules externes sont des extensions de la bibliothèque standard qui offrent
des fonctionnalités supplémentaires pour des tâches spécifiques. Ces modules peuvent être
téléchargés et installés à l'aide d'outils tels que pip, le gestionnaire de paquets de Python. Des
exemples de modules externes populaires incluent NumPy pour le calcul scientifique, Pandas
pour la manipulation de données, requests pour les requêtes HTTP, et bien d'autres.
18 février 2024 21
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
L’INTERFACE GRAPHIQUE :
Python offre le module Tkinter qui est inclus dans la bibliothèque standard. Tkinter est une
bibliothèque d'interface graphique multiplateforme qui permet de créer des applications avec
des éléments d'interface utilisateur tels que des fenêtres, des boutons, des champs de texte,
des listes déroulantes, etc. Avec tkinter, vous pouvez créer des applications graphiques
interactives de manière relativement simple.
en utilisant la classe Tk du module tkinter, puis ajouter des widgets (éléments d'interface
utilisateur) à cette fenêtre en utilisant d'autres classes disponibles dans tkinter telles que
Label, Button, Entry, etc.
Voici un exemple simple d'une application tkinter qui crée une fenêtre avec un bouton :
import tkinter as tk
def say_hello():
print("Hello, tkinter!")
# Créer un bouton
button = tk.Button(root, text="Cliquez-moi", command=say_hello)
En explorant davantage
tkinter, vous pourrez créer des interfaces graphiques plus complexes et interactives pour vos
applications Python.
18 février 2024 22
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
nombre de modules adaptés à différents types de bases de données. Voici quelques-uns des
modules les plus couramment utilisés pour se connecter à des bases de données
relationnelles :
1.MySQL :
Si vous utilisez MySQL, vous pouvez utiliser le module
mysql-connector-python
pour établir une connexion à votre base de données. Voici un exemple de code pour se
connecter à une base de données MySQL :
import mysql.connector
# Établir la connexion
conn = mysql.connector.connect(
host="localhost",
user="votre_utilisateur",
password="votre_mot_de_passe",
database="votre_base_de_données"
)
2. PostgreSQL:
Pour se connecter à une base de données PostgreSQL, vous pouvez utiliser le module
psycopg2
. Voici un exemple de code pour se connecter à une base de données PostgreSQL :
import psycopg2
# Établir la connexion
conn = psycopg2.connect(
dbname="votre_base_de_données",
user="votre_utilisateur",
password="votre_mot_de_passe",
host="localhost"
)
18 février 2024 23
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
# Fermer la connexion
conn.close()
3.SQLite:
Pour se connecter à une base de données SQLite, vous n'avez pas besoin d'installer un
module supplémentaire car SQLite est pris en charge par défaut dans Python. Voici un
exemple de code pour se connecter à une base de données SQLite :
import sqlite3
# Établir la connexion
conn = sqlite3.connect('chemin_vers_votre_base_de_données')
# Fermer la connexion
conn.close()
Ces exemples couvrent les bases de la connexion à une base de données à partir de Python.
Selon le type de base de données que vous utilisez, vous devrez installer le module
approprié et fournir les informations de connexion nécessaires.
18 février 2024 24
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Flask est une excellente façon de créer des applications web légères et rapides en Python.
Flask est un micro-framework web qui offre les fonctionnalités de base nécessaires pour
construire des applications web, tout en laissant une grande flexibilité pour ajouter des
fonctionnalités supplémentaires au besoin.
Voici une introduction rapide à la création d'une application web avec Flask :
1. Installation de Flask :
Tout d'abord, vous devez installer Flask. Vous pouvez le faire en utilisant pip, le
gestionnaire de paquets de Python, avec la commande suivante :
Une fois que Flask est installé, vous pouvez créer un fichier Python pour votre application
web. Voici un exemple de code pour une application web simple avec Flask :
app = Flask(__name__)
@app.route('/')
def index():
return 'Bonjour, bienvenue sur mon site !'
if __name__ == '__main__':
app.run()
Dans cet exemple, nous avons créé une application web avec une seule route ("/") qui
renvoie un message de bienvenue.
3. Exécution de l'application :
Pour exécuter votre application, enregistrez le code ci-dessus dans un fichier appelé
"app.py" par exemple, puis exécutez-le avec la commande suivante dans votre terminal :
python app.py
Cela démarrera un serveur de développement local et vous pourrez accéder à votre application
en ouvrant un navigateur web et en naviguant vers l'adresse "http://localhost:5000/".
18 février 2024 25
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Maintenant, pour le projet final, vous pourriez envisager de créer une application web plus
complexe avec des fonctionnalités telles que l'authentification utilisateur, la gestion de bases
de données, des formulaires, etc. Par exemple, vous pourriez créer un blog où les utilisateurs
peuvent s'inscrire, se connecter, publier des articles et les commenter.
L’interface graphique pour l'enregistrement des clients dans une base de données MySQL en utilisant
Tkinter et le module mysql-connector-python. Assurez-vous d'avoir l'assuré sur le module pip install
mysql-connector-python avant d'exécuter le code.
def creer_connexion():
conn = mysql.connector.connect(
host='localhost',
user='votre_utilisateur', # Remplacez par votre nom d'utilisateur MySQL
password='votre_mot_de_passe', # Remplacez par votre mot de passe MySQL
database='votre_base_de_donnees' # Remplacez par le nom de votre base de données
)
return conn
def initialiser_bdd():
conn = creer_connexion()
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS clients (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
telephone VARCHAR(15))''')
conn.commit()
conn.close()
def ajouter_client():
18 février 2024 26
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
try:
conn = creer_connexion()
cur = conn.cursor()
cur.execute("INSERT INTO clients (nom, prenom, email, telephone) VALUES (%s, %s, %s,
%s)",
(entry_nom.get(), entry_prenom.get(), entry_email.get(), entry_tel.get()))
conn.commit()
messagebox.showinfo("Succès", "Client ajouté avec succès!")
vider_champs()
except mysql.connector.IntegrityError:
messagebox.showerror("Erreur", "Cet email existe déjà!")
except Exception as e:
messagebox.showerror("Erreur", str(e))
finally:
conn.close()
def vider_champs():
entry_nom.delete(0, END)
entry_prenom.delete(0, END)
entry_email.delete(0, END)
entry_tel.delete(0, END)
# Initialisation de la BDD
initialiser_bdd()
# Création de l'interface
app = Tk()
app.title("Gestion Clients")
app.geometry("400x300")
18 février 2024 27
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
app.mainloop()
Voici une explication détaillée de chaque ligne du code de l'interface graphique pour l'enregistrement
des clients dans une base de données MySQL avec Tkinter :
from tkinter import *
import mysql.connector
from tkinter import messagebox
from tkinter import * : Importe tous les composants de Tkinter pour créer l'interface
graphique.
import mysql.connector : Importe le module mysql.connectorqui permis de se connecter et
d'interagir avec une base de données MySQL.
from tkinter import messagebox : Importe le module messagebox de Tkinter pour afficher des
boîtes de dialogue d'information ou d'erreur.
def creer_connexion():
18 février 2024 28
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
conn = mysql.connector.connect(
host='localhost',
user='votre_utilisateur', # Remplacez par votre nom d'utilisateur MySQL
password='votre_mot_de_passe', # Remplacez par votre mot de passe MySQL
database='votre_base_de_donnees' # Remplacez par le nom de votre base de données
)
return conn
def creer_connexion():
conn = mysql.connector.connect(
host='localhost',
user='votre_utilisateur', # Remplacez par votre nom d'utilisateur MySQL
password='votre_mot_de_passe', # Remplacez par votre mot de passe MySQL
database='votre_base_de_donnees' # Remplacez par le nom de votre base de données
)
return conn
Fonctionnement creer_connexion :
Définit une fonction qui est une connexion à la base de données MySQL.
mysql.connector.connect(...) : Crée une connexion à la base de données avec les paramètres
spécifiés (hôte, utilisateur, mot de passe, et nom de la base de données).
return conn : Renvoi l'objet de connexion pour être utilisé.
def initialiser_bdd():
conn = creer_connexion()
cur = conn.cursor()
Fonctionnement initialiser_bdd :
18 février 2024 29
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
telephone VARCHAR(15))''')
Création de la table :
o Exécute une commande SQL pour création une table clients si elle n'existe pas
déjà.
o La table contient quatre colonnes :
id : un identifiant unique qui s'incrémente automatique.
nom et prenom : les chaînes de caractères obligatoires (non nulles).
email : une chaîne unique (ne peut pas être dupliquée).
telephone : un champ pour le numéro de téléphone.
conn.commit()
conn.close()
Gestion des exceptions :
Utiliser un bloc try pour gérer les erreurs potentielles des du code de l'exécution.
Établit une nouvelle connexion à la base de données et crée un curseur.
cur.execute("INSERT INTO clients (nom, prenom, email, telephone) VALUES (%s, %s, %s, %s)",
(entry_nom.get(), entry_prenom.get(), entry_email.get(), entry_tel.get()))
18 février 2024 30
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
fenetre.title("Calcul de la Somme")
fenetre.geometry("300x200")
entry1 = Entry(fenetre)
entry1.pack()
entry2 = Entry(fenetre)
entry2.pack()
Pour cela, vous devrez apprendre à utiliser des bases de données avec Flask (par exemple,
avec SQLAlchemy), à gérer les sessions utilisateur, à valider les formulaires, etc.
En résumé, la programmation web avec Flask est un domaine passionnant qui offre de
nombreuses possibilités. Commencez par des applications simples et progressez vers des
projets plus complexes au fur et à mesure que vous maîtrisez les concepts fondamentaux.
Bonne chance !
18 février 2024 31
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
import tempfile
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
from subprocess import call
import random
import mysql.connector
from time import strftime
import pymysql
import os
from PIL import ImageTk,Image
class Supermarche:
def __init__(self, root):
self.root = root
self.root.title("GESTION SUPER MARCHE")
self.root.geometry("1600x1080+0+0")
lblheure=Label(self.root,text="HH:MM:SS",font=("Arial",30,"bold"),bg="GREE
N",fg="orange",bd=4,relief=GROOVE)
lblheure.place(x=10,y=10,width=200,height=70)
heure()
#NOS VARIABLES
self.nom=StringVar()
self.prenom=StringVar()
self.facture=StringVar()
z=random.randint(1000,9999)
self.facture.set(z)
self.rech_facture=StringVar()
self.prix=IntVar()
self.totalbrut=StringVar()
self.taxe=StringVar()
self.totalnet=StringVar()
self.contact=StringVar()
self.quantite=IntVar()
self.produit = StringVar()
#LISTE CATEGORIE
self.listcategorie=["Select","Vêtements","Vivre
Frais",'Boissons','Téléphones']
self.list_Sous_categorie_Vetement=["Pantalon","T_shirt",'Shirt']
# Sous categorie Vetement
self.Pantalon = ["Levis", "Zara", 'GUCI', 'Autres']
18 février 2024 32
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.prix_Levis = 5000
self.prix_Zara = 10000
self.prix_GUCI = 15000
self.prix_Autres = 20000
18 février 2024 33
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.prix_Cammon19 = 550000
self.prix_Cammon19_Pro = 620000
frameClient=LabelFrame(mainFrame,text="Client",bd=4,relief=SUNKEN,font=('F
ranklin Gothic Demi',15),fg="GREEN",bg="white")
frameClient.place(x=10,y=5,width=350,height=150)
#PRODUITS
frameProduits = LabelFrame(mainFrame,
text="Produits",bd=3,relief=SUNKEN, font=('Franklin Gothic Demi',
15),fg='GREEN', bg="white")
frameProduits.place(x=380, y=5, width=405, height=200)
18 février 2024 34
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.txt_categorie =ttk.Combobox(frameProduits,
width=18,state="readonly",values=self.listcategorie, font=("Arial", 15))
self.txt_categorie.grid(row=0, column=1, sticky=W, padx=5, pady=2)
self.txt_categorie.current(0)
self.txt_categorie.bind("<<ComboboxSelected>>",self.fonctionCategorie)
self.txt_souscat = ttk.Combobox(frameProduits,
width=18,state="readonly",values=[''], font=("Arial", 15))
self.txt_souscat.grid(row=1, column=1, sticky=W, padx=5, pady=2)
self.txt_souscat.current(0)
self.txt_souscat.bind("<<ComboboxSelected>>",
self.fonctionSousCat)
# RECHERCHE
frameRecherche = LabelFrame(mainFrame,
bd=2,relief=SOLID,text="Recherche", font=('Arial', 15),fg='green',
bg="white")
frameRecherche.place(x=800, y=5, width=400, height=80)
self.btn_recherche=Button(frameRecherche,
bd=2,relief=SUNKEN,command=self.rechercher,text='Search',fg='white',bg='gr
een',font=("Arial", 15),cursor='hand2')
self.btn_recherche.place(x=300, y=5, width=90, height=30)
# ESPACE FACTURE
frameFacture= LabelFrame(mainFrame, bd=4, relief=SUNKEN,
text="Facture", font=('Arial', 15), bg="white")
18 février 2024 35
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.textarea=Text(frameFacture,yscrollcommand=scoll_y.set,font=('Arial',
15),bg='white',fg='black')
scoll_y.pack( side=RIGHT,fill=Y)
scoll_y.config(command=self.textarea.yview)
self.textarea.pack(fill=BOTH,expand=1)
#EN BAS
frameButtons = LabelFrame(mainFrame, bd=4, relief=SOLID,
text="Bouttons", font=('Franklin Gothic Demi', 15),fg='green', bg="white")
frameButtons.place(x=450, y=460, width=650, height=130)
self.ajouter = Button(frameButtons, bd=2,command=self.ajouter,
relief=SUNKEN, text='Ajouter', fg='white', bg='green',font=("Arial",
15,"bold"), cursor='hand2')
self.ajouter.place(x=10, y=5, width=200, height=40)
# TOTAL
frameTotal= LabelFrame(mainFrame, bd=5, relief=SOLID,
text="TOTAUX", font=('Franklin Gothic Demi', 15),fg='red', bg="white")
frameTotal.place(x=0, y=450, width=400, height=140)
self.lbl_totalbrut = Label(frameTotal, text="Total Brut",
font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_totalbrut.grid(row=0, column=0, sticky=W, padx=5, pady=2)
18 février 2024 36
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
#IMAGES
self.image=ImageTk.PhotoImage(Image.open(r"Images/su1.jpg"))
self.lbl_image=Label(image=self.image)
self.lbl_image.place(x=20,y=230)
self.image2 = ImageTk.PhotoImage(Image.open(r"Images/sup1.jpg"))
self.lbl_image2 = Label(image=self.image2)
self.lbl_image2.place(x=395, y=280)
self.image3 = ImageTk.PhotoImage(Image.open(r"Images\LOGO.png"))
self.lbl_image3 = Label(image=self.image3)
self.lbl_image3.place(x=1050, y=10,width=200,height=50)
#LES FONCTIONS
def retour(self):
self.root.destroy()
call(["python", "Menu.py"])
def fonctionCategorie(self,even=""):
if self.txt_categorie.get()=="Vêtements":
self.txt_souscat.config(values=self.list_Sous_categorie_Vetement)
self.txt_souscat.current(0)
if self.txt_categorie.get()=="Vivre Frais":
self.txt_souscat.config(values=self.list_Cat_Vivre_frais)
self.txt_souscat.current(0)
if self.txt_categorie.get()=="Boissons":
self.txt_souscat.config(values=self.list_Cat_Boissons)
self.txt_souscat.current(0)
if self.txt_categorie.get() == "Téléphones":
self.txt_souscat.config(values=self.list_Cat_Telephone)
self.txt_souscat.current(0)
def fonctionSousCat(self,even=""):
# vetement
18 février 2024 37
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
if self.txt_souscat.get()=='Pantalon':
self.txt_nomproduit.config(values=self.Pantalon)
self.txt_nomproduit.current(0)
if self.txt_souscat.get()=='T_shirt':
self.txt_nomproduit.config(values=self.T_shirt)
self.txt_nomproduit.current(0)
if self.txt_souscat.get()=='Shirt':
self.txt_nomproduit.config(values=self.Shirt)
self.txt_nomproduit.current(0)
# Vivre Frais
if self.txt_souscat.get() == 'Poulet"':
self.txt_nomproduit.config(values=self.Poulet)
self.txt_nomproduit.current(0)
if self.txt_souscat.get() == 'Poissons':
self.txt_nomproduit.config(values=self.Poissons)
self.txt_nomproduit.current(0)
# Boissons
if self.txt_souscat.get() == 'Fanta':
self.txt_nomproduit.config(values=self.Fanta)
self.txt_nomproduit.current(0)
if self.txt_souscat.get == 'Coca':
self.txt_nomproduit.config(values=self.Coca)
self.txt_nomproduit.current(0)
if self.txt_souscat.get() == 'Rani':
self.txt_nomproduit.config(values=self.Rani)
self.txt_nomproduit.current(0)
# Téléphones
if self.txt_souscat.get() == 'Techno':
self.txt_nomproduit.config(values=self.Techno)
self.txt_nomproduit.current(0)
if self.txt_souscat.get ()== 'Itel':
self.txt_nomproduit.config(values=self.Itel)
self.txt_nomproduit.current(0)
if self.txt_souscat.get() == 'Iphone':
self.txt_nomproduit.config(values=self.Iphones)
self.txt_nomproduit.current(0)
def fonctionNomProduits(self,even=""):
# vetement
if self.txt_nomproduit.get()=='Levis':
self.txt_prix.config(values=self.prix_Levis)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Zara':
self.txt_prix.config(values=self.prix_Zara)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'GUCI':
self.txt_prix.config(values=self.prix_GUCI)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Autres':
self.txt_prix.config(values=self.prix_Autres)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Polo':
self.txt_prix.config(values=self.prix_Polo)
self.txt_prix.current(0)
18 février 2024 38
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.quantite.set(1)
if self.txt_nomproduit.get()=='Lacoste':
self.txt_prix.config(values=self.prix_Lacoste)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Crocodile':
self.txt_prix.config(values=self.prix_Crocodile)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Jack':
self.txt_prix.config(values=self.prix_Jack)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Berth Maz':
self.txt_prix.config(values=self.prix_Berth_Maz)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Fashion':
self.txt_prix.config(values=self.prix_Fashion)
self.txt_prix.current(0)
self.quantite.set(1)
# Vivres Frais
if self.txt_nomproduit.get()=='Poids8':
self.txt_prix.config(values=self.prix_8kg)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Poids10':
self.txt_prix.config(values=self.prix_10kg)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Poids11':
self.txt_prix.config(values=self.prix_11kg)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Poids12':
self.txt_prix.config(values=self.prix_12kg)
self.txt_prix.current(0)
self.quantite.set(1)
#Boissons
if self.txt_nomproduit.get() == '2L':
self.txt_prix.config(values=self.prix_2L)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '1.5L':
self.txt_prix.config(values=self.prix_15L)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '500ml':
self.txt_prix.config(values=self.prix_500ml)
18 février 2024 39
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '330ml':
self.txt_prix.config(values=self.prix_330ml)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '2L':
self.txt_prix.config(values=self.prix_2L)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '1.5L':
self.txt_prix.config(values=self.prix_15L)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '500ml':
self.txt_prix.config(values=self.prix_500ml)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '330ml':
self.txt_prix.config(values=self.prix_330ml)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '2L':
self.txt_prix.config(values=self.prix_2L)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '1.5L':
self.txt_prix.config(values=self.prix_15L)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == '500ml':
self.txt_prix.config(values=self.prix_500ml)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='330ml':
self.txt_prix.config(values=self.prix_330ml)
self.txt_prix.current(0)
self.quantite.set(1)
#LES TELEPHONES
if self.txt_nomproduit.get() == 'Spark4':
self.txt_prix.config(values=self.prix_Spark4)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Cammon18':
self.txt_prix.config(values=self.prix_Cammon18)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Cammon18 Premier':
self.txt_prix.config(values=self.prix_Cammon18_Premier)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Cammon19':
self.txt_prix.config(values=self.prix_Cammon19)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Cammon19 Pro':
self.txt_prix.config(values=self.prix_Cammon19_Pro)
18 février 2024 40
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'S15Pro':
self.txt_prix.config(values=self.prix_S15Pro)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'S16Pro':
self.txt_prix.config(values=self.prix_S16Pro)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'P33 Plus':
self.txt_prix.config(values=self.prix_P33_Plus)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'A57':
self.txt_prix.config(values=self.prix_A57)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'A57Plus':
self.txt_prix.config(values=self.prix_A57Plus)
self.txt_prix.current(0)
self.quantite.set(1)
18 février 2024 41
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
con.commit()
con.close()
messagebox.showinfo('Sauvergarder',f"La facture
numero{self.facture.get()}a été enregistré avec succès!")
f1.close()
self.rein()
def imprimer(self):
fichier=tempfile.mktemp(".txt")
open(fichier,'w' ).write(self.textarea.get(1.0,END))
os.startfile(fichier,'print')
def rechercher(self):
trouver='non'
for i in os.listdir(r"Factures/"):
if i.split(".")[0]==self.rech_facture.get():
f1=open(f"Factures/{i}","r")
self.textarea.delete(1.0,END)
for d in f1:
self.textarea.insert(END,d)
f1.close
trouver="oui"
if trouver=="non":
messagebox.showerror('Erreur',"La facture n'existe pas")
def rein(self):
self.textarea.delete(1.0,END)
self.nom.set("")
self.prenom.set("")
self.contact.set("")
x=random.randint(1000,9999)
self.facture.set(str(x))
self.rech_facture.set('')
self.produit.set("")
self.prix.set(0)
self.quantite.set(0)
self.taxe.set("")
self.l=[0]
self.totalbrut.set("")
self.totalnet.set("")
self.bienvenu()
def ajouter(self):
self.n=self.prix.get()
self.m=self.quantite.get()*self.n
self.l.append(self.m)
if self.produit.get()=="":
messagebox.showerror('Erreur',"Veillez selectionner un
produit")
else:
self.textarea.insert(END,f"\n{self.produit.get()}\t\t{self.quantite.get()}
\t\t{self.m}")
self.totalbrut.set((sum(self.l)))
self.taxe.set((((sum(self.l))-(self.prix.get()))*0.16))
self.totalnet.set((((sum(self.l))+(((sum(self.l))-
(self.prix.get()))*0.16))))
def bienvenu(self):
self.textarea.delete(1.0,END)
self.textarea.insert(END,"\t\tETS Berth MAZ")
self.textarea.insert(END, f"\n
18 février 2024 42
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
***********************")
self.textarea.insert(END,f"\nN° Facture : {self.facture.get()}")
self.textarea.insert(END,f"\nNom : {self.nom.get()}")
self.textarea.insert(END, f"\nPrénom :
{self.prenom.get()}")
self.textarea.insert(END, f"\nContact :
{self.contact.get()}")
self.textarea.insert(END,
f"\n===================================")
self.textarea.insert(END,
f"\n===================================")
def generer(self):
if self.produit.get()=="":
messagebox.showerror('Erreur', "Ajouter d'abord un produit")
else:
text=self.textarea.get(10.0,(10.0+float(len(self.l))))
self.bienvenu()
text=self.textarea.insert(END,text)
text=self.textarea.insert(END,"\n===================================")
self.textarea.insert(END,f'\nTotal Brut
:\t\t{self.totalbrut.get()}')
self.textarea.insert(END, f'\nTVA :\t\t{self.taxe.get()}')
self.textarea.insert(END, f'\nTotal Net
:\t\t{self.totalnet.get()}')
text = self.textarea.insert(END,
"\n===================================")
def quitterAPP(self):
reponse=messagebox.askyesno('Quitter',"Voulez-vous Quiter?")
if reponse==True:
self.root.destroy()
if __name__=="__main__":
root = Tk()
obj = Supermarche(root)
root.mainloop()
POO en Python
Exercice 46 : classe Rectangle
Écrire en Python une classe «Rectangle» ayant deux variables « a » et « b » et une fonction
membre « surface() » qui retournera la surface du rectangle.
Corrigé
18 février 2024 43
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
class Rectangle:
def __init__ (self,a=0,b=0):
self.a=a
self.b=b
def surface(self):
return self.a*self.b
r1 = Rectangle ();
r2 = Rectangle (5,4);
print("la surface est:",r1.surface())
print("la surface est:",r2.surface());
class Somme:
def __init__(self,nbr1=0,nbr2=0):
self.n1=nbr1
self.n2=nbr2
def som(self):
return n1 + n2
n1 = int(input("Entrer N1:"))
n2 = int(input("Entrer N1:"))
obj = Somme(n1,n2);
print("Le resultat de l'addition est :",obj.som())
18 février 2024 44
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Corrigé
class Etudiant:
def __init__(self,nom,note1,note2):
self.nom = nom
self.note1 = note1
self.note2 = note2
def calc_moy(self):
return (self.note1 + self.note2)/2
Réaliser en Python une classe point permettant de manipuler un point d'un plan.on prévoira
:
1) un point est définit par ses coordonnées x et y (des membres privés)
2) les constructeurs
3) une fonction membre déplace effectuant une translation définie par ses deux arguments
dx et dy (double)
class Point:
def __init__(self,a=0,b=0):
self.x=a
18 février 2024 45
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
self.y=b
def get_x(self):
return self.x
def get_y(self):
return self.y
def set_x(self,a):
self.x=a
def deplace(self,dx,dy):
self.set_x(self.get_x()+dx)
self.set_y(self.get_y()+dy)
def affiche(self):
print("x=",self.get_x())
print("y=",self.get_y())
def saisir(self):
print("donner les coordonnées")
self.x = int(input ("x = "))
self.y = int(input ("y = "))
p = Point(1,1)
x = Point(5,5)
c = Point()
p.affiche()
p.deplace(5,5)
p.affiche();
print("la distance px est: ",p.distance(x));
18 février 2024 46
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
c=p.milieu(x)
print("le milieu de [px] est: (",c.get_x(),",",c.get_y(),")")
Écrire un programme en Python qui simule la gestion d’un simple compte bancaire. Le
compte est créé avec un solde initial. Il est possible de déposer et de retirer des fonds,
d’ajouter des intérêts et de connaître le solde actuel. Cela devrait être implémenté dans une
classe nommée Account qui comprend:
def getBalance(self):
return self.balance
def deposer(self,amount):
self.balance += amount
compte1 = Compte()
compte2 = Compte(3000)
compte1.deposer(100)
compte2.retirer(1000)
compte1.ajouter_Interet (0.3)
print(compte1.getBalance())
print(compte2.getBalance())
18 février 2024 47
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Corrigé
class Temps:
def setTemps(self,h,m,s):
self.heures = h
self.minutes = m
self.seconds = s
def getHours(self):
return self.heures
def getMin(self) :
return self.minutes
def getSec(self) :
return self.seconds
def getTemps(self):
print(self.heures,"h ",self.minutes,"min ",self.seconds,"s")
def ajouterTemps(self,t1,t2):
self.seconds= t1.seconds + t2.seconds
self.minutes = t1.minutes + t2.minutes + (int(self.seconds/60))
self.heures = t1.heures + t2.heures + (int(self.minutes/60))
self.minutes %= 60
self.seconds %= 60
t1 = Temps(4,43,59)
t2 = Temps(1,20,32)
t3 = Temps()
18 février 2024 48
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
t1.getTemps()
t2.getTemps()
t3.ajouterTemps(t1, t2)
t3.getTemps()
Écrire en Python un programme utilisant une classe rectangle dont le constructeur prend
deux paramètres, largeur et hauteur et qui offre les fonctions suivantes :
1) calcul du périmètre
2) calcul de la surface
3) affichage
class Rectangle:
def __init__(self,L,h):
self.largeur = L
self.hauteur = h
def getLargeur(self):
return largeur
def getHauteur(self):
return hauteur
def perimetre(self) :
return 2*(self.largeur + self.hauteur)
def surface(self):
return self.largeur * self.hauteur
def setLargeur(self,newLargeur):
self.largeur = newLargeur
def setHauteur(self,newHauteur):
self.hauteur = newHauteur
def afficher(self):
print("la longueur :",self.hauteur)
print("la largeur :",self.largeur)
R= Rectangle (5,4)
R.afficher()
18 février 2024 49
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Exercice 53 : L'héritage
Écrivez un programme en Python qui définit une classe appelée Forme avec un constructeur
qui donne de la valeur à la largeur(x) et à la hauteur(y). Définir la méthode aire() dans les
deux sous-classes Triangle et Rectangle, qui calculent l’aire. Dans la méthode principale
main, définissez deux variables, un triangle et un rectangle, puis appelez la fonction aire()
dans ces deux variables.
Notez que:
l’aire du triangle est = largeur * hauteur / 2
l’aire du rectangle est = largeur * hauteur.
Corrigé
class Forme:
def __init__(self,x=0,y=0):
self.x = x
self.y = y
def aire(self):
return (self.x * self.y)
R = Rectangle (2,3)
T = Triangle (2,3)
R1 = Rectangle ()
print(R.aire())
print(T.aire())
print(R1.aire())
18 février 2024 50
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
Réponse
#coding: utf-8
class Rectangle:
def __init__(self,longueur,largeur):
self.longueur = longueur
self.largeur = largeur
class Parallelepipede(Rectangle):
def __init__(self,longueur,largeur, hauteur):
Rectangle.__init__(self,longueur,largeur)
self.hauteur = hauteur
monRectangle = Rectangle(7, 5)
monParallelepipede = Parallelepipede(7,5,2)
print("Le périmètre de mon rectangle est : ",monRectangle.Perimetre())
print("La surface de mon rectangle est : ", monRectangle.Surface())
print("Le volume de mon parallelepipede est : ", monParallelepipede.Volume())
18 février 2024 51
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
1) Créer une classe Python nommée CompteBancaire qui représente un compte bancaire,
ayant pour attributs : numeroCompte (type numérique ) , nom (nom du propriétaire du
compte du type chaine), solde.
2) Créer un constructeur ayant comme paramètres : numeroCompte, nom, solde.
3) Créer une méthode Versement() qui gère les versements.
4) Créer une méthode Retrait() qui gère les retraits.
5) Créer une méthode Agios() permettant d'appliquer les agios à un pourcentage de 5 % du
solde
6) Créer une méthode afficher() permettant d’afficher les détails sur le compte
7) Donner le code complet de la classe CompteBancaire.
Réponse
#coding: utf-8
class CompteBancaire:
def __init__(self, idNumber, nomPrenom, solde):
self.idNumber = idNumber
self.nomPrenom = nomPrenom
self.solde = solde
def agios(self):
self.solde =self.solde*95/100
def afficher(self):
print("Compte numéro : " , self.idNumber)
print("Nom & Prénom : ", self.nomPrenom)
print(" Solde : ", self.solde , " DH ")
18 février 2024 52
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
monCompte.retrait(24000)
#monCompte.agios()
monCompte.afficher()
1) Définir une classe Cercle permettant de créer un cercle C(O,r) de centre O(a,b) et de
rayon r à l'aide du constructeur :
2)Définir une méthode Surface() de la classe qui permet de calculer la surface du cercle
3)Définir une méthode Perimetre() de la classe qui permet de calculer le périmètre du cercle
4) Définir une méthode testAppartenance() de la classe qui permet de tester si un point
A(x,y) appartient ou non au cercle C(O,r).
Réponse
#coding: utf-8
from math import *
class Cercle:
def __init__(self , a , b , r):
self.a = a
self.b = b
self.r = r
def perimetre(self):
return 2*pi*self.r
def surface(self):
return pi*self.r**2
def formEquation(self,x,y):
return (x-self.a)**2 + (y-self.b)**2 -self.r**2
def test_appartenance(self,x,y):
if(self.formEquation(x,y)==0):
print("le point : (",x,y,") appartient au cercle C")
else:
print("le point : (",x,y,") n'appartient pas au cercle C")
# Instanciation
18 février 2024 53
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
C = Cercle(1,2,1)
1) Créer une classe Calcul ayant un constructeur par défaut (sans paramètres) permettant
d’effectuer différents calculs sur les nombres entiers.
2) Créer au sein de la classe Calcul une méthode nommée Factorielle() qui permet de
calculer le factorielle d'un entier. Tester la méthode en faisant une instanciation sur la classe.
3) Créer au sein de la classe Calcul une méthode nommée Somme() permettant de calculer
la somme des n premiers entiers: 1 + 2 + 3 + .. + n. Tester la méthode.
4) Créer au sein de la classe Calcul une méthode nommée testPrim() permettant de tester
la primalité d'un entier donné. Tester la méthode.
5) Créer au sein de la classe Calcul une méthode nommée testPrims() permettant de tester si
deux nombres sont premier entre eux.
6) Créer une méthode tableMult() qui crée et affiche la table de multiplication d'un entier
donné. Créer ensuite une méthode allTablesMult() permettant d'afficher toutes les tables de
multiplications des entiers 1, 2, 3, ..., 9.
7) Créer une méthode listDiv() qui récupère tous les diviseurs d'un entier donné sur
une liste Ldiv. Créer une autre méthode listDivPrim() qui récupère tous les diviseurs
premiers d'un entier donné.
Réponse
#coding: utf-8
class Calcul:
def __init__(self):
pass
#---Factorielle ------------
def factorielle(self, n):
j=1
for i in range(1,n+1):
j = j*i
return j
#---Somme des n premiers nombres----
def somme(self, n):
j=1
for i in range(1,n+1):
18 février 2024 54
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
j = j+i
return j
#---Test primalité d'un nombre------------
def testPrim(self, n):
j=0
for i in range(1,n+1):
if(n%i==0):
j=j+1
if(j == 2):
return True
else:
return False
#---Table de multiplication-------------
def tableMult(self,k):
for i in range(1,10):
print(i," x ",k," = ",i*k)
18 février 2024 55
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
return lDiv
# Exemple Instanciation
Cal = Calcul()
Cal.testprims(13 , 7)
print("Liste des diviseurs de 18 : ", Cal.listDiv(18))
print("Liste des diviseurs premiers de 18 : ", Cal.listDivPrim(18))
Cal.toutesLesTables()
Exercice 58
Coder une classe myString permettant de doter les chaines de caractères des
méthodes append() et pop() faisant les mêmes opérations que celles des listes. Exemple si
on crée des chaines via l'instanciation s1 = myString("Hello") et s2 = "bonjour", et on lui
applique les méthodes :
print(s1.append(" world !")) # affiche 'Hello world !'
print(s2.pop(2)) # affiche 'bojour'.
Réponse
class myString:
def __init__(self,s):
self.s = s
def append(self,x):
self.s = self.s + x
return self.s
def pop(self,i):
s1 = self.s[0:i]
s2 = self.s[i+1:len(self.s)]
return s1+s2
def modifier(self,i):
pass
18 février 2024 56
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
# Tester la classe
S = myString("hello")
print(S.pop(1)) # affiche 'hllo'
print(S.append(" world !")) # affiche 'hello world !'
Exercice 59
1. Définir une classe Book avec les attributs suivants : Titre, Auteur (Nom complet), Prix.
2. Définir un constructeur ayant comme attributs: Titre, Auteur, Prix.
3. Définir la méthode View() pour afficher les informations d'une instance object Book.
4. Ecrire un programme pour tester la classe Book.
Réponse
#coding: utf-8
# Question 1
class Book:
# Question 2
def __init__(self , Title , Author , Price):
self.Title = Title
self.Author = Author
self.Price = Price
# Question 3
def view(self ):
return ("Book Title: " , self.Title , "Book Author: " , self.Author, "Book Price: "
, self.Price)
# Question 4
MyBook = Book("Python" , "Mohamed" , "23 Dh")
print( MyBook.view())
Ecrire une classe Python nommée Geometry avec un constructeur par défaut sans
paramètres.
1) Ajouter une méthode nommée distance() à la classe geometry qui permet de calculer la
distance entre deux points
A = (a1, a2), B = (b1, b2) (avec la convention: un point est est identifié à ses coordonnées M
18 février 2024 57
MASTER MOSHA MESU Pierre Stéphane
SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT
SUPERIEUR DE COMMERCE DE LUBUMBASHI
= (xM , yM) )
2) Ajouter une méthode nommée middle() à la classe geometry qui permet de déterminer le
milieu d'un bipoint (A , B).
3) Ajouter une méthode nommée trianglePerimeter() à la classe geometry qui permet de
calculer le périmètre d'un triangle ABC.
4) Ajouter une méthode nommée triangleIsoscel() qui renvoie True si le triangle est
isoscel et False sinon.
18 février 2024 58
MASTER MOSHA MESU Pierre Stéphane