0% ont trouvé ce document utile (0 vote)
74 vues58 pages

Support de Cours de Programmation Orientee Objet Python

Ce document est un support de cours pour un programme de BAC1 en programmation orientée objet avec Python à l'Institut Supérieur de Commerce de Lubumbashi. Il couvre des sujets tels que l'introduction à Python, les bases du langage, la manipulation de fichiers, la programmation orientée objet, et inclut des exercices pratiques. Le cours se termine par un projet final qui met en œuvre les concepts appris.

Transféré par

aspickamayi6
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
74 vues58 pages

Support de Cours de Programmation Orientee Objet Python

Ce document est un support de cours pour un programme de BAC1 en programmation orientée objet avec Python à l'Institut Supérieur de Commerce de Lubumbashi. Il couvre des sujets tels que l'introduction à Python, les bases du langage, la manipulation de fichiers, la programmation orientée objet, et inclut des exercices pratiques. Le cours se termine par un projet final qui met en œuvre les concepts appris.

Transféré par

aspickamayi6
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SUPPORT DE COURS DE BAC1 PROGRAMMATION ORIENTEE OBJECT AVEC PYTHON A L’INSTITUT

SUPERIEUR DE COMMERCE DE LUBUMBASHI

Plan du cours de programmation orientée objet

1. Introduction à Python
- Historique de Python
- Installation de Python
- Premier programme en Python

2. Les bases de Python


- Types de données (entiers, flottants, chaînes de caractères, listes, tuples,
dictionnaires)
- Opérateurs arithmétiques et logiques
- Structures de contrôle (boucles, conditions)

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

5. Programmation orientée objet


- Classes et objets
- Héritage et polymorphisme

6. Gestion des exceptions


- Utilisation des blocs try/except/finally
- Création de ses propres exceptions

7. Bibliothèques standard et modules externes


- Utilisation des bibliothèques standard de Python (ex : math, random, datetime)
- Installation et utilisation de modules externes avec pip
8. Introduction à l'interface graphique avec Tkinter
- Création de fenêtres et widgets
- Gestion des événements
9. Introduction à la programmation web avec Flask
- Création d'une application web simple
- Gestion des routes et des requêtes HTTP
10. Projet final
- Application concrète mettant en œuvre les concepts abordés au cours du programme

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 :

Python est un langage de programmation interprété, de haut niveau, polyvalent et orienté


objet Il a été créé par Guido van Rossum et sa première version a été publiée en 1991.Python
est largement utilisé dans le développement web, l'analyse de données, l'intelligence
artificielle, l'automatisation de tâches et bien d'autres domaines.

2. Installation de Python

1. Pour installer Python, suivez ces étapes :

 1. Rendez-vous sur le site officiel de Python (https://www.python.org/downloads/) et


téléchargez la dernière version stable de Python pour votre système d'exploitation
(Windows, macOS, Linux).
 2. Une fois le téléchargement terminé, exécutez le programme d'installation en suivant
les instructions à l'écran. Assurez-vous de cocher la case "Add Python to PATH"
pendant l'installation pour faciliter l'accès à Python depuis n'importe quel répertoire
dans votre terminal ou invite de commande.
 3. Une fois l'installation terminée, ouvrez votre terminal ou invite de commande et
tapez "python" pour vérifier que Python a bien été installé. Vous devriez voir un
message indiquant la version de Python installée.

Maintenant que Python est installé, vous pouvez écrire votre premier programme.
Voici un exemple simple .

Sauvegardez ce code dans un fichier avec l'extension ".py" (par exemple,


"mon_programme.py"). Ensuite, ouvrez votre terminal ou invite de commande, naviguez
jusqu'au répertoire où se trouve votre fichier et tapez "python mon_programme.py". Vous
devriez voir le message "Bonjour, monde!" s'afficher dans votre terminal.

Félicitations, vous venez d'écrire et exécuter votre premier programme Python!

PYCHARM : Est un environnement de développement intégré (IDE) très populaire pour


Python, développé par JetBrains. Il offre de nombreuses fonctionnalités pour faciliter le
développement de logiciels en Python, notamment l'analyse statique avancée, la navigation
intelligente dans le code, le débogage puissant, la complétion automatique du code et bien
plus encore.
Pour installer PyCharm, suivez ces étapes :

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

 1. Rendez-vous sur le site officiel de JetBrains


(https://www.jetbrains.com/pycharm/download/) et téléchargez la version de
PyCharm adaptée à votre système d'exploitation. Il existe une version gratuite appelée
"PyCharm Community Edition" ainsi qu'une version payante appelée "PyCharm
Professional Edition".
 2. Une fois le téléchargement terminé, exécutez le programme d'installation en suivant
les instructions à l'écran.
 3. Après l'installation, lancez PyCharm. Lors du premier démarrage, vous devrez
configurer votre environnement de développement en spécifiant l'emplacement de
votre interpréteur Python. Si vous avez installé Python récemment, PyCharm devrait
détecter automatiquement l'installation et vous proposer de l'utiliser. Sinon, vous
devrez spécifier manuellement l'emplacement de Python.

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.

PyCharm est un outil puissant qui peut grandement faciliter le processus de


développement en Python. N'hésitez pas à explorer ses fonctionnalités et à consulter
la documentation officielle pour en tirer le meilleur parti.

2. LES BASES DE PYTHON


Types de données : Python prend en charge les entiers, les flottants, les chaînes de caractères,
les listes, les tuples et les dictionnaires
Opérateurs : Python offre une variété d'opérateurs arithmétiques :
+ : Addition
- : Soustraction
*: Multiplication
/ : Division
== : Comparaison
() : Diffèrent de
+= : Incrémentation
% : division modulaire

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) :

a) Les instructions conditionnelles:


Syntaxe :
if Conditions :
else condition contraire :
elif autres conditions :

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

Écrire un programme Python qui permet d'afficher si un nombre entier saisi


au clavier est pair ou impair.

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

A = int(input("Entrer un Entier A :"))


B = int(input("Entrer un Entier B :"))
C = int(input("Entrer un Entier C :"))
Max = A
if B >= Max : Max = B
if C >= Max : Max = C
print("Le maximum est ",Max)

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

note = float(input("Entrer la note:"))


if note <= 20 and note >= 10 :
print("Validé ")
elif note < 10 and note >= 0 :
print("non Validé ")
else:
print("La note incorrecte !!! ")

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

Écrire un programme Python qui demande deux nombres m et n à l’utilisateur et


l’informe ensuite si le produit de ces deux nombres est positif ou négatif. On inclut
dans le programme le cas où le produit peut être nul.
Réponse
A = float(input("Entrer un Entier A:"))
B = float(input("Entrer un Entier B:"))
if A*B < 0 :
print("Le produit de",A,"et",B,"est négatif")
elif A*B > 0:
print("Le produit de",A,"et",B,"est positif")
else :
print("Le produit de",A,"et",B,"est nul ")

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

print("le montant TTC est: ",Prix_TTC)


else:
print("le montant TTC est: ",Prix_TTC)

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 !!!!"

b) LES BOUCLES (FOR, WHILE)


 Boucle for :

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.

For i in ranger (5):


print(i)

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

for i in range (1,11):


print("5 *",i,"=",i*5)

Exercice 21
Écrire un programme Python qui permet d'afficher la table de multiplication d’un
entier saisie par l’utilisateur.
Réponse

n=int(input("Donner un entier :"))


for i in range (1,11):
print(n," * ",i,"=",i*n)

Exercice 22
Écrivez un programme Python, entrez deux nombres de l'utilisateur et trouvez le plus
grand diviseur commun.
Réponse

num1 = int(input("Saisir nombre 1 : "))


num2 = int(input("Saisir nombre 2 : "))
min = num1 if (num1 < num2) else num2

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

for i in range(1, min+1):


if (num1 % i == 0 and num2 % i == 0):
pgcd = i
print("PGCD de {0} et {1} = {2}".format(num1, num2, pgcd))

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

num = int(input("Saisir un nombre : "))


somme = 0
for i in range(1, num):
if (num % i == 0):
somme += i

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

num = int(input("Saisir un nombre : "))


estPremier = True
for i in range(2, num // 2 + 1):
if (num % i == 0):
estPremier = False

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

n = int(input("Saisir un nombre : "))


print("les nombres impairs de 1 à {0} ".format(n))
for i in range(1, n+1):
if (i % 2 != 0):
print(i)

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

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)))
for i in range(N):
print(tab[i])

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

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)))
print("Les éléments négatifs du tableau sont : ")
for i in range(N):
if (tab[i] < 0):
print(tab[i])

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

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)))

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

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)))
max = tab[0]
min = tab[0]
somme=0
for i in range(N):
if (tab[i] > max):
max = tab[i]
if (tab[i] < min):
min = tab[i]
print("le maximum est ",max)
print("le minimum est ",min)

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

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)))
max1 = max2 = tab[0]
for i in range(N):
if (tab[i] > max1):
max2 = max1
max1 = tab[i]
elif (tab[i] > max2 and tab[i] < max1):
max2 = tab[i]

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

print("Premier plus grand = " , max1)


print("Deuxième plus grand =" , max2)

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

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)))
pair = 0
impair = 0
for i in range(N):
if (tab[i] % 2 == 0):
pair+=1
else:
impair+=1
print("Total des éléments pairs: ",pair)
print("Total des éléments impairs : " ,impair)

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

N = int(input("Saisir le nombre d'éléments : "))


source=[0]*N
dest=[0]*N
for i in range(N):
source[i]=int(input("Saisir l'élement {0} : ".format(i+1)))
for i in range(N):
dest[i] = source[i]
print("Les éléments du tableau source sont : ")
for i in range(N):
print(source[i], end=", ")
print()
print("Les éléments du tableau dest sont : ")
for i in range(N):
print(dest[i])

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

N = int(input("Saisir le nombre d'éléments : "))


tab=[0]*(N+1)
for i in range(N):
tab[i]=int(input("Saisir l'élement {0} : ".format(i+1)))
num = int(input("Saisir un élément : "))
pos = int(input("Saisir une position : "))

if (pos > N + 1 or pos <= 0):


print("Position invalide! Veuillez saisir une position entre 1 et " , N)
else:
for i in range(N,-1,-1):
tab[i] = tab[i - 1]
tab[pos - 1] = num
N+=1
for i in range(N):
print(tab[i])

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

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)))
pos = int(input("Saisir la position de l'élément à supprimer : "))
if (pos > N + 1 or pos <= 0):
print("Position invalide! Veuillez saisir une position entre 1 et " , N)
else:
for i in range(pos-1, N-1):
tab[i] = tab[i + 1]

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

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

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

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)))
for i in range(N):
for j in range(i+1,N):
if (tab[i] == tab[j]):
for k in range(j,N-1):
tab[k] = tab[k + 1]
N-=1
j-=1
for i in range(N):
print(tab[i] )

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

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)))
indexArriere = 0
indexAvant = N - 1
while (indexArriere < indexAvant):
temp = tab[indexArriere]
tab[indexArriere] = tab[indexAvant]
tab[indexAvant] = temp
indexArriere+=1
indexAvant-=1
for i in range(N):
print(tab[i])
Exercice 45

Ecrire un programme Python qui permet de calculer la somme :


S = 1¹ +2² + 3³ +........+ n^n
*** Solution ****
S=0
n=int(input("Donner un entier :"))
for i in range (1,n+1):
S=S+i**i
print("la somme est :",S)

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

Python offre des fonctionnalités puissantes pour


manipuler les fichiers, telles que l'ouverture, la lecture, l'écriture et la fermeture de fichiers.
- Les opérations de lecture et d'écriture de fichiers peuvent être effectuées à l'aide des modes
de fichier tels que 'r' (lecture), 'w' (écriture) et 'a' (ajout).

6. PROGRAMMATION ORIENTEE OBJET (POO)

Python est un langage de programmation orienté


objet, ce qui signifie qu'il prend en charge la création de classes et d'objets. Les classes
définissent des attributs et des méthodes, et les objets sont des instances de ces classes.
L'héritage, l'encapsulation et le polymorphisme sont des concepts clés de la POO en Python.

7. GESTION DES EXCEPTION


Les exceptions sont des événements imprévus qui se produisent pendant l'exécution d'un
programme. Python offre des mécanismes pour gérer les exceptions à l'aide des blocs try-
except-finally. Les développeurs peuvent également définir leurs propres exceptions
personnalisées pour gérer des situations spécifiques.

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 une fenêtre principale


root = tk.Tk()

# Créer un bouton
button = tk.Button(root, text="Cliquez-moi", command=say_hello)

# Ajouter le bouton à la fenêtre


button.pack()

# Lancer la boucle principale


root.mainloop()

En explorant davantage
tkinter, vous pourrez créer des interfaces graphiques plus complexes et interactives pour vos
applications Python.

CONNEXION A LA BASE DE DONNEES


Pour se connecter à une base de données à partir de Python, vous pouvez utiliser un certain

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"
)

# Créer un curseur pour exécuter des requêtes


cursor = conn.cursor()
# Exécuter une requête SQL
cursor.execute("SELECT * FROM ma_table")
# Récupérer les résultats
results = cursor.fetchall()
# Fermer la connexion
conn.close()

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

# Créer un curseur pour exécuter des requêtes


cursor = conn.cursor()

# Exécuter une requête SQL


cursor.execute("SELECT * FROM ma_table")

# Récupérer les résultats


results = cursor.fetchall()

# 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')

# Créer un curseur pour exécuter des requêtes


cursor = conn.cursor()

# Exécuter une requête SQL


cursor.execute("SELECT * FROM ma_table")

# Récupérer les résultats


results = cursor.fetchall()

# 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

LA PROGRAMMATION WEB AVEC FLASK :

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 :

pip install flask

2. Création d'une application web:

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 :

from flask import 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.

from tkinter import *


import mysql.connector
from tkinter import messagebox

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

Label(app, text="Nom:").grid(row=0, column=0, padx=10, pady=5, sticky=W)


entry_nom = Entry(app, width=30)
entry_nom.grid(row=0, column=1, padx=10, pady=5)

Label(app, text="Prénom:").grid(row=1, column=0, padx=10, pady=5, sticky=W)


entry_prenom = Entry(app, width=30)
entry_prenom.grid(row=1, column=1, padx=10, pady=5)

Label(app, text="Email:").grid(row=2, column=0, padx=10, pady=5, sticky=W)


entry_email = Entry(app, width=30)
entry_email.grid(row=2, column=1, padx=10, pady=5)

Label(app, text="Téléphone:").grid(row=3, column=0, padx=10, pady=5, sticky=W)


entry_tel = Entry(app, width=30)
entry_tel.grid(row=3, column=1, padx=10, pady=5)

btn_ajouter = Button(app, text="Enregistrer", command=ajouter_client, width=15)


btn_ajouter.grid(row=4, column=1, pady=10)

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

Importation des modules :

 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 :

 Appelle la fonction creer_connexion() pour la voie d'une vis-à-vis d'une connexion à la


base de données.
 cur = conn.cursor() Crée un curseur qui permis de manuel des instructions SQL

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,

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()))

from tkinter import *

# Fonction pour calculer la somme


def calculer_somme():
try:
# Récupérer les valeurs des champs de saisie
nombre1 = float(entry1.get())
nombre2 = float(entry2.get())
# Calculer la somme
somme = nombre1 + nombre2
# Afficher le résultat dans le label
label_resultat.config(text=f"La somme est : {somme}")
except ValueError:
label_resultat.config(text="Veuillez entrer des nombres valides.")

# Création de la fenêtre principale


fenetre = Tk()

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")

# Création des widgets


label1 = Label(fenetre, text="Entrez le premier nombre :")
label1.pack()

entry1 = Entry(fenetre)
entry1.pack()

label2 = Label(fenetre, text="Entrez le deuxième nombre :")


label2.pack()

entry2 = Entry(fenetre)
entry2.pack()

# Bouton pour calculer la somme


button_calculer = Button(fenetre, text="Calculer la Somme", command=calculer_somme)
button_calculer.pack()

# Label pour afficher le résultat


label_resultat = Label(fenetre, text="")
label_resultat.pack()

# Lancer la boucle principale de l'interface


fenetre.mainloop()

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")

titre1 = Label(self.root, text="GESTION DE SUPER MARCHE ",


border=10, relief=SUNKEN, bg='GREEN',
font=("Babylon5", 35), fg="WHITE")
titre1.pack(side=TOP, fill=X)
def heure():
heur=strftime("%H:%M:%S")
lblheure.config(text=heur)
lblheure.after(1000,heure)

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

self.T_shirt = [ "Polo", "Lacoste", 'Crocodile', 'Jack']


self.prix_Polo = 15000
self.prix_Lacoste = 10000
self.prix_Crocodile = 5000
self.prix_Jack = 8000

self.Shirt = ["Peter England", "Luis Philipe", 'Berth Maz',


'Fashion']
self.prix_peter_england= 4500
self.prix_Luis_Philipe = 7000
self.prix_Berth_Maz = 20000
self.prix_Fashion = 17000

# Sous categorie Vivre frais

self.list_Cat_Vivre_frais = ["Poulet", "Poissons"]

self.Poulet = ["Poids8","Poids10", "Poids11", 'Poids12']


self.prix_8kg = 3000
self.prix_10kg = 4500
self.prix_11kg= 5500
self.prix_12kg = 7000

self.Poissons = ["Tilapia", "Karapau", "Tomson"]


self.prix_Tilapia= 4000
self.prix_Karapau = 5700
self.prix_Tomson = 3500
#SOus categorie Boissons
self.list_Cat_Boissons = ["Fanta", "Coca","Rani"]

self.Fanta= ["2L", "1.5L", "500ml", '330ml']


self.prix_2L = 4000
self.prix_15L= 3500
self.prix_500ml = 1500
self.prix_330ml = 1000

self.Coca= ["2L", "1.5L", "500ml", '330ml']


self.prix_2L = 4000
self.prix_15L = 3500
self.prix_500ml = 1500
self.prix_330ml = 1000

self.Rani= ["2L", "1.5L", "500ml", '330ml']


self.prix_2L = 7000
self.prix_15L = 5000
self.prix_500ml = 3000
self.prix_330ml = 2000
# Sous Categorie Telephones
self.list_Cat_Telephone = ["Techno", "Itel", "Iphone"]

self.Techno = ["Spark4", "Cammon18", "Cammon18 Premier",


'Cammon19',"Cammon19 Pro"]
self.prix_Spark4 = 350000
self.prix_Cammon18 = 480000
self.prix_Cammon18_Premier = 500000

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

self.Itel = ["S15Pro", "S16Pro", "P33 Plus", 'A57', "A57Plus"]


self.prix_S15Pro = 250000
self.prix_S16Pro = 300000
self.prix_P33_Plus = 350000
self.prix_A57 = 400000
self.prix_A57Plus = 450000

self.Iphones = ["Iphone X", "Iphone XR", "Iphone XS Max", 'Iphone


11', "Iphone 13ProMax"]
self.prix_IphoneX = 360000
self.prix_IphoneXR= 750000
self.prix_IphoneXsMax = 820000
self.prix_Iphone11 = 1000000
self.prix_Iphone13ProMax = 2500000

mainFrame= Frame(self.root, border=4, relief=GROOVE,bg='white')


mainFrame.place(x=10, y=70, width=1250, height=600)
#CLIENTS

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)

self.lbl_nom = Label(frameClient, text="Nom ", font=("Arial", 15,


"bold"), fg="black",bg='white')
self.lbl_nom.grid(row=0,column=0,sticky=W,padx=5,pady=2)
self.lbl_prenom = Label(frameClient, text="Prénom ",
font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_prenom.grid(row=1, column=0, sticky=W, padx=5, pady=2)
self.lbl_contact = Label(frameClient, text="Contact",
font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_contact.grid(row=2, column=0, sticky=W, padx=5, pady=2)

self.txt_nom = ttk.Entry(frameClient, text="Nom ",


textvariable=self.nom,font=("Arial", 15))
self.txt_nom.grid(row=0, column=1, sticky=W, padx=5, pady=2)
self.txt_prenom = ttk.Entry(frameClient, text="Prénom ",
textvariable=self.prenom,font=("Arial", 15))
self.txt_prenom.grid(row=1, column=1, sticky=W, padx=5, pady=2)
self.txt_contact = ttk.Entry(frameClient, text="Contact",
textvariable=self.contact, font=("Arial", 15))
self.txt_contact.grid(row=2, column=1, sticky=W, padx=5, pady=2)

#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)

self.lbl_categorie = Label(frameProduits, text="Categorie ",


font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_categorie.grid(row=0, column=0, sticky=W, padx=5, pady=2)
self.lbl_souscat = Label(frameProduits, text="Sous Categorie ",
font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_souscat.grid(row=1, column=0, sticky=W, padx=5, pady=2)
self.lbl_nomproduit = Label(frameProduits, text="Nom produit",

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

font=("Arial", 15, "bold"), fg="black", bg='white')


self.lbl_nomproduit.grid(row=2, column=0, sticky=W, padx=5,
pady=2)
self.lbl_prix = Label(frameProduits, text="Prix", font=("Arial",
15, "bold"), fg="black", bg='white')
self.lbl_prix.grid(row=3, column=0, sticky=W, padx=5, pady=2)
self.lbl_quantite = Label(frameProduits, text="Quantité",
font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_quantite.grid(row=4, column=0, sticky=W, padx=5, pady=2)

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)

self.txt_nomproduit = ttk.Combobox(frameProduits, width=18,


state="readonly", textvariable=self.produit,font=("Arial", 15))
self.txt_nomproduit.grid(row=2, column=1, sticky=W, padx=5,
pady=2)
self.txt_nomproduit.bind("<<ComboboxSelected>>",
self.fonctionNomProduits)

self.txt_prix = ttk.Combobox(frameProduits, width=18,


state="readonly", textvariable=self.prix, font=("Arial", 15))
self.txt_prix.grid(row=3, column=1, sticky=W, padx=5, pady=2)
self.txt_quantite = ttk.Entry(frameProduits, width=18,
textvariable=self.quantite,font=("Arial", 15))
self.txt_quantite.grid(row=4, column=1, sticky=W, padx=5, pady=2)

# 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.lbl_Recherche=Label(frameRecherche, text="N° Facture ",


font=("Arial", 15, "bold"), fg="black", bg='white')
self.lbl_Recherche.grid(row=0, column=0, sticky=W, padx=5, pady=2)

self.txt_Recherche = ttk.Entry(frameRecherche, width=15,


textvariable=self.rech_facture, font=("Arial", 15))
self.txt_Recherche.place(x=120, y=5, width=160, height=30)

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

frameFacture.place(x=790, y=100, width=450, height=350)

scoll_y = Scrollbar(frameFacture, orient=VERTICAL)

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)

self.generer = Button(frameButtons, bd=2,command=self.generer,


relief=SUNKEN, text='Générer', fg='white', bg='blue',font=("Arial",
15,"bold"), cursor='hand2')
self.generer.place(x=220, y=5, width=200, height=40)

self.sauvegarder= Button(frameButtons, bd=2, relief=SUNKEN,


command=self.sauvegarder,text='Enregistrer', fg='white', bg='orange',
font=("Arial", 15,"bold"), cursor='hand2')
self.sauvegarder.place(x=430, y=5, width=200, height=40)

self.imprimer= Button(frameButtons, bd=2,command=self.imprimer,


relief=SUNKEN, text='Imprimer', fg='white', bg='gray',
font=("Arial", 15,"bold"),
cursor='hand2')
self.imprimer.place(x=10, y=55, width=200, height=40)

self.reini = Button(frameButtons, bd=2,command=self.rein,


relief=SUNKEN, text='Reinitialiser', fg='white', bg='black',
font=("Arial", 15,'bold'),
cursor='hand2')
self.reini.place(x=220, y=55, width=200, height=40)

self.quiter= Button(frameButtons, bd=2,command=self.quitterAPP,


relief=SUNKEN, text='Quiter', fg='white', bg='Red',
font=("Arial", 15,"bold"), cursor='hand2')
self.quiter.place(x=430, y=55, width=200, height=40)
self.l=[]
self.bienvenu()

# 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)

self.lbl_tva = Label(frameTotal, text="TVA", font=("Arial", 15,


"bold"), fg="black", bg='white')
self.lbl_tva.grid(row=1, 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

self.lbl_totalnet = Label(frameTotal, text="Total Net",


font=("Arial", 15, "bold"), fg="red", bg='white')
self.lbl_totalnet.grid(row=2, column=0, sticky=W, padx=5, pady=2)

self.txt_totalbrut = ttk.Entry(frameTotal, width=20,


textvariable=self.totalbrut, font=("Arial", 15),state='readonly')
self.txt_totalbrut.grid(row=0, column=1, sticky=W, padx=5, pady=2)

self.txt_tva = ttk.Entry(frameTotal, width=20,


textvariable=self.taxe, font=("Arial", 15),state='readonly')
self.txt_tva.grid(row=1, column=1, sticky=W, padx=5, pady=2)

self.txt_totanet = ttk.Entry(frameTotal, width=20,


textvariable=self.totalnet, font=("Arial", 15),state='readonly')
self.txt_totanet.grid(row=2, column=1, sticky=W, padx=5, pady=2)

#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)

Retour = Button(self.root, cursor="hand2", bd=4, relief=RIDGE,


text="RETOUR", font=("Arial", 11, "bold"),
command=self.retour, background="grey",
fg="black")
Retour.place(x=1150, y=600, width=100)

#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() =='Peter England':


self.txt_prix.config(values=self.prix_peter_england)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() =='Luis Philipe':
self.txt_prix.config(values=self.prix_Luis_Philipe)
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)

if self.txt_nomproduit.get() == 'Iphone X':


self.txt_prix.config(values=self.prix_IphoneX)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Iphone XR':
self.txt_prix.config(values=self.prix_IphoneXR)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get()=='Iphone XS Max':
self.txt_prix.config(values=self.prix_IphoneXsMax)
self.txt_prix.current(0)
self.quantite.set(1)
if self.txt_nomproduit.get() == 'Iphone 11':
self.txt_prix.config(values=self.prix_Iphone11)
self.txt_prix.current(0)
self.quantite.set(1)

if self.txt_nomproduit.get() =='Iphone 13ProMax':


self.txt_prix.config(values=self.prix_Iphone13ProMax)
self.txt_prix.current(0)
self.quantite.set(1)
def sauvegarder(self):
op=messagebox.askyesno('Sauvergarder','Vous voulez sauvergarder?')
if op==True:
self.donneFacture=self.textarea.get(1.0,END)
f1=open(r"Factures/"+str(self.facture.get())+".txt","w")
f1.write(self.donneFacture)
con = pymysql.connect(host="localhost", user="root",
password="", database="supermarche")
cur = con.cursor()
cur.execute("insert into ventes values
(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", (
self.nom.get(), self.prenom.get(), self.contact.get(),
self.txt_categorie.get(), self.txt_souscat.get(), self.produit.get(),
self.prix.get(), self.quantite.get(), self.facture.get(),
self.totalbrut.get(), self.taxe.get(), self.totalnet.get()))

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"\nPRODUIT || \t QUANTITE ||


\t PRIX ")

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());

Exercice 47 : classe Somme


Écrire en Python une classe « Somme » ayant deux variables « n1 » et « n2 » et une fonction
membre « som() » qui calcule la somme. Dans la méthode principale main demandez à
l’utilisateur d’entrez deux entiers et passez-les au constructeur par défaut de la classe
« Somme » et afficher le résultat de l’addition des deux nombres.
Corrigé

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())

Exercice 48 : classe Etudiant

Écrire classe Python appelée « Etudiant » avec les membres suivant :


nom : (de type char),
note1, note2 : (de type float)
calc_moy() : calcule la note moyenne.
afficher () : affiche le nom et la note moyenne.
Le programme principal (main) demande à l’utilisateur d’entrer le nom et les notes d'un
étudiant. et affiche leur nom et la note moyenne.

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

def afficher (self):


print("Etudiant: ",self.nom, " moyenne: ",self.calc_moy())

nom = input("Entrer le nom: ")


note1= int(input("Entrer la note 1: "))
note2= int(input("Entrer la note 2: "))
E = Etudiant (nom, note1, note2)
E.afficher()
Exercice 49 : classe point

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)

4)une fonction membre affiche se contentant d'afficher les coordonnées cartésiennes du


point.
5)une fonction membre saisir se contentant de saisir les coordonnées cartésiennes du point.
6)une fonction membre distance effectuant calculant la distance entre deux point.
7)une fonction membre milieu donnant le milieu d'un segment.
8)un petit programme d'essai (main) gérant la classe point.
Corrigé
from math import *

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 set_y(self, b):


self.y=b

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 = "))

def distance (self,p):


x1=(self.get_x()-p.get_x())*(self.get_x()-p.get_x());
x2=(self.get_y()-p.get_y())*(self.get_y()-p.get_y());
d=sqrt(x1+x2)
return d

def milieu(self, p):


p1 = Point();
p1.x=(self.get_x()+p.get_x())/2
p1.y=(self.get_y()+p.get_y())/2
return p1

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(),")")

Exercice 50 : classe Compte

É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:

1) Un constructeur par défaut qui met le solde initial à zéro.


2) Un constructeur qui accepte une balance initial comme paramètre.
3) Une fonction getBalance qui renvoie le solde actuel.
4) Une méthode deposer pour déposer un montant spécifié.
5) Une méthode retirer pour retirer un montant spécifié.
6) Une méthode ajouter_Interet pour ajouter de l’intérêt au compte.
La méthode ajouter_Interet prend le taux d’intérêt comme paramètre et modifie le solde du
compte en solde * (1 + taux d’intérêt).
Corrigé
class Compte:
def __init__(self,balance=0):
self.balance = balance

def getBalance(self):
return self.balance

def deposer(self,amount):
self.balance += amount

def retirer (self,amount):


self.balance -= amount

def ajouter_Interet (self,rate):


self.balance = self.balance*(1 + rate)

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

Exercice 51 : Classe temps


Créer en Python une classe appelée Temps, qui a des membres de type int tels que heures,
minutes et secondes.(rendez-les private)
1) Un constructeur doit initialiser ces données à 0
2) Un autre constructeur devrait l’initialiser à des valeurs fixes.
3) Une fonction membre devrait l’afficher, au format 17h 59min 59s.
4) Une autre fonction pour renvoyer les données de chaque membre nommez-les getheurs,
getMin et getSec
5) Une fonction membre doit ajouter deux objets de type Temps passé en arguments.

Corrigé

class Temps:
def setTemps(self,h,m,s):
self.heures = h
self.minutes = m
self.seconds = s

def __init__ (self,h=0,m=0,s=0):


self.setTemps(h,m,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()

Exercice 52 : Classe rectangle

É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

ainsi que les accesseurs et mutateurs triviaux (lecture et modification de la largeur et de la


hauteur).
Corrigé

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

print("la surface est ",R.surface());


print("le perimetre est ",R.perimetre())

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

class Rectangle (Forme):


def __init__(self,x=0,y=0):
Forme.__init__(self,x,y)

def aire(self):
return (self.x * self.y)

class Triangle (Forme):


def __init__(self,x=0,y=0):
Forme.__init__(self,x,y)
def aire(self):
return (self.x * self.y / 2)

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

Exercice 54: Classe Rectangle

1) Ecrire une classe Rectangle en langage Python, permettant de construire un rectangle


dotée d'attributs longueur et largeur.
2) Créer une méthode Perimetre() permettant de calculer le périmètre du rectangle et une
méthode Surface() permettant de calculer la surface du rectangle
3) Créer les getters et setters.
4) Créer une classe fille Parallelepipede héritant de la classe Rectangle et dotée en plus d'un
attribut hauteur et d'une autre méthode Volume() permettant de calculer le volume du
Parallélépipède.

Réponse

#coding: utf-8
class Rectangle:
def __init__(self,longueur,largeur):
self.longueur = longueur
self.largeur = largeur

# Méthode qui calcul le périmètre


def Perimetre(self):
return 2*(self.longueur + self.largeur)

# Méthode qui calcul la surface


def Surface(self):
return self.longueur*self.largeur

class Parallelepipede(Rectangle):
def __init__(self,longueur,largeur, hauteur):
Rectangle.__init__(self,longueur,largeur)
self.hauteur = hauteur

# méthode qui calcul le volume


def Volume(self):
return self.longueur*self.largeur*self.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

Exercice 55: Compte bancaire

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 versement(self, argent):


self.solde = self.solde + argent

def retrait(self, argent):


if(self.solde < argent):
print(" Impossible d'effectuer l'opération. Solde insuffisant !")
else:
self.solde = self.solde - argent

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 ")

monCompte = CompteBancaire(16168891, " Mohamed Rachid", 22300)


monCompte.versement(1500)

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()

Exercice 56: Classe Cercle

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)

print("le périmètre du cercle C est: ", C.perimetre())


print("le surface du cercle C est: ", C.surface())
C.test_appartenance(1,1)
Exercice 57: Calcul arithmétique

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

# ---Test primalité de deux nombres entiers------------


def testprims(self , n , m):
divCommun = 0
for i in range(1 , n+1):
if (n%i == 0 and m%i == 0):
divCommun = divCommun + 1
if divCommun == 1:
print("Les nombres " , n , " et ", m , " sont premiers entre eux")
else:
print("Les nombres " , n , " et ", m , " ne sont pas premiers entre eux")

#---Table de multiplication-------------
def tableMult(self,k):
for i in range(1,10):
print(i," x ",k," = ",i*k)

#---Toutes les tables de multiplication des nombres 1, 2, .., 9


def toutesLesTables(self):
for k in range(1,10):
print("\nla table de multiplication de : ",k, " est : ")
for i in range(1,10):
print(i," x ",k," = ",i*k)

#----- liste des diviseurs d'un entier


def listDiv(self , n):
# initialisation de la liste des diviseurs
lDiv = []
for i in range(1 , n+1):
if ( n%i == 0):
lDiv.append(i)

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

# ------liste des diviseurs premiers d'un entier----------------


def listDivPrim(self , n):
# initialisation de la liste des diviseurs
lDiv = []
for i in range(1 , n+1):
if ( n%i == 0 and self.testPrim(i)):
lDiv.append(i)
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())

Exercise 60: Classe Geometry

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

Vous aimerez peut-être aussi