Correction Examen Python 2022 (3eme BI)
Session Rattrapage
Exercice 1 : (4pts)
Dans un magasin de vente des produits informatique, les produits sont représentés
par une base de données sous forme d’un dictionnaire dont :
Les clés sont les noms de produits,
Les valeurs sont des tuples(prix, quantité).
Travail demandé :
1. Ecrire une fonction disponible() permettant d’envoyer un booléen
indiquant la disponibilité d’un produit donné dans la base. Un produit est
disponible si sa quantité est différente de 0.
Correction
def disponible(nomp,produits):
if nomp in produits:
return produits[nomp][1]!=0
else:
return false
2. Ecrire une fonction plus_cher() qui permet de retourner le nom du produit
le plus cher.
Correction
def plus_cher(produits):
nom_produit_cher=" "
prix_max=0
for nom_p,(prix,quantite)in produits.items():
if(prix_max<prix):
nom_produit_cher=nom_p
prix_max=prix
return nom_produit_cher
3. Ecrire une fonction achat() qui permet de faire la mise à jour de la quantité
du produit acheté et d’envoyer le nouveau dictionnaire si le produit est
disponible et la quantité suffisante. Si le produit n’existe pas dans la base
on affiche « le produit n’existe pas ». Si la quantité qu’on désire acheter est
supérieur à la quantité du stock le message « quantité insuffisante sera
affiché ».
1
Correction :
def achat(nom_produit, quantite_voulue, produits):
if nom_produit not in produits:
return "Le produit n'existe pas.", produits
prix, quantite_disponible = produits[nom_produit]
if quantite_voulue > quantite_disponible:
return "Quantité insuffisante.", produits
produits[nom_produit] = (prix, quantite_disponible - quantite_voulue)
return produits
version 2
def Achat(nomp, quantitep, produits):
if(nomp not in produits):
return ("le produit n'existe pas")
if(disponible(nomp, produits)):
if(produits[nomp][1]<quantitep):
return("la quantite insufaisante")
else:
produits[nomp]=(produits[nomp][0],produits[nomp][1]-quantitep)
return produits
else:
return ("le produit est non disponible")
Exercice 2 : (4pts)
1. Définir une classe Telephone() destinée à initialiser les paramètres d’un
téléphone et réaliser certaines opérations de base.
Le constructeur de cette classe initialisera les valeurs par défaut :
- Numero_serie
- Code_pine
- Modèle_telephone
- Numéro_telephone
Cette classe possède deux méthodes :
a) Une méthode chercher_reseau(self, Reseau) qui affiche le réseau utilisé.
Sachant bien qu’on a trois réseaux :
’TT’ : pour le réseau Télécom
‘Or’ : pour le réseau Oredoo
2
‘Og’ : pour le réseau Orange
b) Une méthode allumer(self, codePin, Reseau) qui affiche le modèle de
téléphone, le code pin et le réseau utilisé dans le cas où le codePin
correspond au code_pin par défaut sinon affiche le message ‘erreur du code
pin’.
Correction :
class Telephone():
def __init__(self,NumS,codeP,ModelTel,NumTel):
self.Numero_serie=NumS
self.Code_pine=codeP
self.Modele_telephone=ModelTel
self.Numero_telephone=NumTel
def cherche_reseau(self, Reseau):
if Reseau=="TT":
print("reseau utilisé: Télecom")
if Reseau=="Or":
print("reseau utilisé: Oredoo")
if Reseau=="Og":
print("reseau utilisé: Orange")
def allumer(self, codePin,Reseau):
if codePin==self.Code_pine:
print("le modele de telephone:", self.Modele_telephone)
print("le code Pin :",self.Code_pine)
self.cherche_reseau(Reseau)
else:
print("erreur du code Pin")
2. Définir une classe Telephone_photo qui hérite de la classe telephone. Le
constructeur de cette classe effectue l’affichage du message
‘telephone+camera’.
Cette classe possèdera ses propres méthodes :
Prendre_photo() : qui affiche le message « camera ready »
Fonction_test() : qui affiche le numero de série et le code pin
3
Correction :
class telephone_photo(Telephone):
def __init__(self,NumS,codeP,ModelTel,NumTel ):
Telephone.__init__(self,NumS,codeP,ModelTel,NumTel)
print("telephone+camera")
def prendre_photo(self):
print("camera ready")
def fonction_test(self):
print("numero de serie:", self.Numero_serie)
print("numero code pin:", self.Code_pine)
Problème : (12pts)
Etant donné un fichier texte nommé "glossaire.txt". De fichier contient les mots
en relation avec un domaine bien déterminé (par exemple, un glossaire du
domaine d’informatique). Tous les mots dans ce fichier sont suivis par le
caractère deux points " : " sauf le dernier.
"D:\\glossaire.txt"
Ordinateur :
souris :clavier :
Pyhton :
programmation :
windows
Travail demandé :
Partie I : Lecture depuis le fichier "glossaire.txt"
1. Écrire la fonction GetListMots() permettant de retourner la liste des mots
existant dans le fichier "glossaire.txt".
Correction def GetListMots():
file = open('GLOSSIERE.txt', "r")
def GetListMots():
l=[]
with open("GLOSSIERE.txt","r") as gl: for line in file:
mots=[line.rsplit(":")for line in gl] mots=[line.rsplit(':')]
return mots l.append(mots)
file.close() return(mots)
file.close()
4
2. Écrire la fonction GetNbrMots() permettant de retourner le nombre de mots dans
le fichier "glossaire.txt".
Correction :
def GetNbrMots():
return len(GetListMots())
3. Écrire la fonction booléenne existMots (Mot) permettant de retourner True si la
chaîne de caractères Mot, donnée en paramètre, existe dans le fichier
"glossaire.txt", False, sinon.
Correction
def existMots(Mot):
mots=GetListMots()
for mot in mots:
if mot==Mot:
return True
else:
return False
4. Écrire la fonction FiltreMots(ch) permettant de retourner la liste des mots
contenant la sous-chaîne de caractères ch, donnée en paramètre, existant dans le
fichier "glossaire.txt".
Correction :
def FiltreMots(ch):
mots = GetListMots()
mots_filtres = []
for mot in mots:
if ch in mot:
mots_filtres.append(mot)
return mots_filtres
5
Partie II : Mise à jour du fichier "glossaire.txt"
5. Écrire la fonction AjouteMot(Mot) permettant d’ajouter la chaîne de
caractères Mot, donnée en paramètre, à la fin du fichier "glossaire.txt".
Correction
def AjouteMot(Mot):
with open("GLOSSIERE.txt", "a") as file:
file.write(":" + Mot )
6. Écrire la fonction AjouteListMots (L) permettant d’ajouter toutes les chaînes
de caractères contenues dans la liste L, donnée en paramètre, à la fin du fichier
"glossaire.txt".
Correction :
def AjouteListMots(L):
for mot in L:
AjouteMot(mot)
file.close()