UVT : Master BADS
Initiation la
programmation python
1
S ance en ligne du 15/11/2020 16h
Enseignante Tutrice : Mme Mansouri L.
2
Partie abord e :
Module 5: Les dictionnaires et les ensembles
Module 6: Les fichiers
Module 7: Les classes
Module 8: La gestion des exceptions
module 5: Les dictionnaires et les ensembles
Les dictionnaires
Un dict est une table d'associations cl -valeur.
3
Les dictionnaires sont modiables.
La cl qui peut tre nimporte quel type non-modifiable (les cha nes,les
nombres et les tuples sils ne contiennent que des l ments non modifiables)
Associer une valeur une cl existante remplace l'ancienne valeur associ e.
Un dict est it rable sur ses cl s.
D claration :
Nom-Collection= {
Cle1 : valeur1,
cle2 :valeur2,
&
Clen :valeurn
}
Exemple :
dico = {}
4
dico['computer'] = 'ordinateur'
dico['mouse'] ='souris'
dico['keyboard'] ='clavier
print(dico)
#on aura ceci :
{'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris}
print (dico['mouse'] ) # affiche souris
Remarque
5
Les dictionnaires ne sont pas des s quences : Les l ments d'un dictionnaire ne sont pas dispos s
dans un ordre particulier. Des op rations comme la concat nation et l'extraction (d'un groupe
d' l ments contigus) ne peuvent donc tout simplement pas s'appliquer ici.
Si vous essayez tout de m me, Python l vera une erreur lors de l'ex cution du code :
print (dic[1:3])
Erreur : KeyError: slice(1, 3, None)
Op rations sur les dictionnaires
6
del(d )
update()
Supprime une paire cl -valeur
Mettre jour la valeur dune cl existante dans le dict d (ex: d.update(livre = 70))
Ajouter une nouvelle paire cl /valeur dans un dict d (ex:d.update( {'C++' : 24} )
Concat ner entre deux dict (ex: d1.update(d2))
Parcours dun dict
On peut utiliser une boucle for pour traiter successivement tous les l ments
contenus dans un dictionnaire, mais attention : Au cours de l'it ration, ce sont les
cl s utilis es dans le dictionnaire qui seront successivement aect es la variable
de travail, et non les valeurs. L'ordre dans lequel les l ments seront extraits est
impr visible.
Exemple :
7
for clef in invent:
print(clef, invent )
Il est recommand de plut t faire appel la m thode items() d crite la section
pr c dente :
for clef, valeur in invent.items():
print(clef, valeur)
Les ensembles (set)
Les ensemble ou sets forment un type de donn es composites Python. Un
ensemble est une collection d l ments non ordonn e, sans index et qui ne peut
pas poss der l l ment dupliqu .
Cest la transposition informatique de la notion densemble math matique.
8
En python, on trouve deux types densembles:
Le set qui est un objet modifiable
le frozenset qui est un objet immuable (le mot anglais frozen signifie gel en
fran ais)
D clarer un set
Il y a deux mani res de d clarer un set.
"En utilisant des accolades.
s = { "anas", "lamia", "amine", "aziz"}
print(s) # affiche {'aziz', 'amine', 'anas', 'lamia'}
9
Notez bien quil sagit dun ensemble non ordonn ce qui explique que
print() retourne les l ments dans un ordre al atoire.
"En transformant une liste en set gr ce au constructeur set().
s2 = set(["lamia", (1,2,3), 7.56])
print(s2) # affiche {7.56, 'lamia', (1, 2, 3)}
Quelques m thodes associ es aux sets
syntaxe
set.add()
description
Ajouter un l ment
set.update()
Ajouter tous les l ments dun
autre set
10
exemple
s = {"amine", "anas", "aziz"}
s.add("lamia")
Publicité
print(s)#affiche
{anas,aziz,amine,lamia}
s = {"amine", "ahmed", "Mohamed"}
s2 = {1, 2, 3}
s.update(s2)
print("s =", s) # s = {1, 2, 3, amine,
ahmed, Mohamed}
print("s2 =", s2)# s2 = {1, 2, 3}
set.remove() et
set.discard()
Supprimer un l ment :
Set.Remove l ve une exception
si on veut supprimer un lement
inexistant , au contraire de
set.discard
s = {"amine", "ahmed", "Mohamed", "aziz"}
s.remove("ahmed")
print(s)
{'aziz', 'Mohamed', 'amine'}
Quelques op rations math matiques associ es aux sets
" Diff rence entre deux sets
s1 = {"amine", "aziz", "anas", "ahmed"}
s2 = {"amine", "anas"}
s3 = s1 - s2
print("s3 =", s3) # s3={'aziz', 'ahmed'}
" Union de deux sets
s1 = {"Python", "php"}
s2 = {"java", "html","php"}
s3 = s1 | s2
print("s3 =", s3) # s3={'php', 'Python', 'java', 'html'}
"
s1 = {"Python", "php"}
s2 = {"java", "php"}
s3 = s1 & s2
print("s3 =", s3) # s3= {'php'}
Intersection de deux sets
11
Les frozensets
Les sets sont des objets modifiables donc il nest pas possible dutiliser un set
comme cl de dictionnaire.
Solution : les frozensets (ensemble g l s) qui sont des sets immuables .
12
"D claration dun frozenset:
s = {1, 2, 3}
fr_s = frozenset(s)
print(type(fr_s)) # <class frozenset>
" frozenset() fonctionne galement avec un tuple ou une liste
R capitulatif sur les types
en python
13
Les listes sont des collections d l ments ordonn s et
alt rables qui peuvent contenir plusieurs fois la m me valeur ;
Les tuples sont des collections d l ments ordonn s et
immuables qui peuvent contenir plusieurs fois la m me valeur ;
Les dictionnaires sont des collection d l ments non
ordonn s mais index s avec des clefs de notre choix et
alt rables qui nacceptent pas de contenir plusieurs fois le
m me l ment ;
Les ensembles sont des collections d l ments non
ordonn es, non index s et non modifiables qui nacceptent pas
de contenir plusieurs fois le m me l ment.
module 6: Les fichiers
1. La Gestion des fichiers texte
14
2. Les fichiers binaires
3. Les fichiers csv
Gestion des fichiers texte
Louverture dun fichier
open()
modes douverture dun fichier :
15
" Le mode lecture ('r') (mode par d faut)
Exemple : file_n = open("utilisateur")
" Le mode criture ('w')
" Le mode ajout ('a')
Fermeture de fichier
close()
Ecrire dans un fichier gr ce la m thode write()
file_n.write(prenom + '\n)
Extraction des donn es
read() extrait la totalit du contenu du fichier quelle retourne sous la forme dune
cha ne de caract res.
readline(): lit une seule ligne la fois et ne prend pas en compte le caract re de fin
de ligne. Elle retourne une cha ne de caract res.
16
file_n = open("utilisateur", 'r')
name = file_n.readline()
file_n.close()
print("Le contenu du fichier est: {} \n ".format(name))
readlines() : extrait la totalit du fichier et retourne non pas une cha ne mais une liste.
file_n = open("utilisateur", 'r')
name = file_.readlines()
file_n.close()
file_ n= open("utilisateur", 'w')
for i in name:
file_n.write(i.lower())
file_n.close()
La syntaxe with open() as
with open("fichier", 'mode') as objet_fichier:
variable = objet_fichier.readlines()
Exemple :
Publicité
with open("utilisateur", 'r') as file_n:
17
name = file_n.readlines()
with open("utilisateur", 'w') as file_n:
for i in name:
file_n.write(i.upper())
Gestion des fichiers binaires
Les modes douverture de fichiers binaires
En mode texte : un fichier est lu caract re par caract re.
En mode binaire : un fichier est lu octet par octet.
modes douverture en binaire :
18
Le mode lecture : 'rb'
Le mode criture avec effacement pr alable du contenu : 'wb
Le mode ajout : 'ab'
S rialisation des donn es avec le module Pickle
Pickle est un module de python qui permet de sauvegarder n'importe quel objet dans un
fichier et de le r cup rer ult rieurement.
Pickling (s rialisation)
Pour s rialiser un objet on utilise la syntaxe suivante :
Exemple :
import pickle
19
pickle.dump (objet, fichier, protocole) # Pour s rialiser un objet
ou
pickle.dumps (objet, protocole) # Pour s rialiser un objet en octets
o :
objet :L'objet stocker
fichier : Le fichier ouvert qui contiendra l'objet
protocole : ( facultatif) :La mani re avec laquelle les objets
sont traduits en binaire (souvent fix e pickle.HIGHEST_PROTOCOL)
cr ation d'un dictionnaire
departement =
{36:info',30:GRH',75:compt'}
enregistrement du dictionnaire
dans un fichier
Fichier = open('data.txt','wb)
s rialisation
pickle.dump(departement,Fichier)
Fichier.close()
Unpickling (d s rialisation)
L'op ration inverse est la d s rialisation. La syntaxe est la suivante :
pickle.load (file) #Pour d s rialiser un objet
ou
pickle.loads (buffer) # Pour d s rialiser un objet partir d'octets
20
Exemple
import pickle
r cup ration du dictionnaire
Fichier = open('data.txt','rb')
Dept = pickle.load(Fichier) # d s rialisation
Fichier.close()
print(Dept)# affiche {75: compt', 36: GRH', 30: info}
print(Dept[36]) #affiche GRH
Gestion des fichiers CSV
Le format CSV (Comma Separated Values) est le format le plus commun dans
l'importation et l'exportation de feuilles de calculs et de bases de donn es.
Cest un fichier texte avec une structure tabulaire ,dans lequel les donn es
sont enregistr es ligne par ligne, et o les valeurs sont s par es par une
virgule.
Remarques :
21
Le passage dune ligne lautre est mat rialis par un saut de ligne ;
";" est utilis comme s parateur de colonnes (param trable, a peut tre
tabulation "\t" aussi souvent) ;
La premi re ligne joue le r le den-t te de colonnes
Lecture du format csv : structure liste
22
Lecture du format csv : structure dictionnaire
On peut lire/ crire les donn es dans un dictionnaire en utilisant les
classes DictReader et DictWriter.
23
module 7: Les classes
24
Pr sentation des classes
Attributs et m thodes
Constructeur et destructeur
lh ritage
25
Pr sentation des classes
d claration
Syntaxe:
class nom_classe :
corps de la classe
...
Instanciation :
Syntaxe: C1=nom_classe()
Les classes sont des types modiables.
Le mot-cl pass permet de pr ciser que le corps
de la classe ne contient rien.
Exemple: class classe_vide:
pass
Attributs et m thodes
26
Les attributs sont des variables qui sont associ es de mani re explicite une classe.
Les attributs de la classe se comportent comme des variables globales pour toutes les
m thodes de cette classe.
Une m thode s crit comme une fonction du corps de la classe avec un premier param tre
self obligatoire, o self repr sente lobjet sur lequel la m thode sera appliqu e. Autrement
dit self est la r f rence dinstance.
class nom_classe :
Publicité
def nom_methode (self, param_1, ..., param_n) :
self.nom_attribut = valeur
Lappel dune m thode :
cl = nom_classe() # objet c1 qui est une instance de nom_classe
t = cl.nom_methode(valeur_1, ..., valeur_n)
27
Exemple :
class Point:
def deplace(self, dx, dy):
self.x = self.x + dx
self.y = self.y + dy
p = Point()
p.x = 1
p.y = 2
p.deplace(2,2)
print("p : x =", p.x, "y =", p.y)
Constructeur et destructeur
28
Constructeur
Cest une fonction avec deux particularit s :
le nom de la fonction doit tre __init__ ;
la fonction doit accepter au moins un param tre, dont le nom doit tre self, et qui doit tre le
premier param tre et ne doit pas retourner de r sultat
Le param tre self repr sente en fait l'objet cible, c'est- -dire que c'est une variable qui contient
une r f rence vers l'objet qui est en cours de cr ation.
Exemples
class Point:
def __init__(self):
self.x = 0
self.y = 0
a = Point()
print("a : x =", a.x, "y =", a.y)
a.x = 1
a.y = 2
print("a : x =", a.x, "y =", a.y)
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom,numero,valeur):
self.nom = nom
self.numero = numero
self.solde = valeur
def afficherSolde(self):
print("Le solde vaut :",self.solde)
monCompte = compte("pro",777,10000)
monCompte.afficherSolde()
Attributs priv s
29
On r alise la protection des attributs de notre classe Point gr ce lutilisation dattributs priv es. Pour avoir des
attributs priv s, leur nom doit d buter par __ (deux fois le symbole underscore _).
Une fois d clar s priv s, il nest pas plus possible de faire appel aux attributs __x et __y depuis lext rieur de la
classe Point. Il faut donc disposer de m thodes qui vont permettre par exemple de modifier ou dafficher les
informations associ es ces variables.
Exemple
class Point:
def __init__(self, x, y):
self.__x = x
self.__y = y
p = Point(1, 2)
p.__x
class Point:
def __init__(self, x, y):
self.__x = x
self.__y = y
def deplace(self, dx, dy):
self.__x = self.__x + dx
self.__y = self.__y + dy
def affiche(self):
Traceback (most recent call last):
File "<pyshell#9>", line 1, in p.__x
AttributeError: Point instance has no attribute '__x'
print("abscisse =", self.__x, "ordonnee =", self.__y)
a = Point(2, 4)
a.affiche()
a.deplace(1, 3)
a.affiche()
destructeur
30
Pour lib rer la m moire dun objet
En Python, son nom est impos : __del__.
On ne fait quasiment jamais dappel explicite la m thode __del__.
Elle est appel e automatiquement quand un objet cesse d tre r f renc .
Syntaxe :
class nomDeLaClasse:
#documentation de la classe
def __init__(self,para1,para2,...):
...
def __del__(self):
...
def methode1(self,para1,para2,...):
...
Lh ritage
31
class classeMere:
#une classe m re
...
class classeFille(classeMere):
#une classe fille h ritant de la classe m re
Constructeur de la classe fille
1ere m thode
class classeFille(classeMere):
#documentation de la classe fille
Publicité
def __init__(self,para1,para2,...):
classeMere.__init__(self,para1,...)
...
2eme m thode (avec super() )
class classeFille(classeMere):
#documentation de la classe fille
def __init__(self,para1,para2,...):
super().__init__(para1,...)
...
H ritage multiple
32
class mere1:
"""une premi re classe m re"""
...
class mere2:
"""une seconde classe m re"""
...
class classeFille(mere1,mere2,...):
"""une classe fille h ritant des classes m re1 et
m re2"""
...
Exemple :
class carnivore:
def __init__(self,p):
self._poidsViande = p
def devorer(self):
print("Je mange",self._poidsViande,"kilos de steack par jour")
class herbivore:
def __init__(self,p):
self._poidsHerbe = p
def brouter(self):
print("Je mange",self._poidsHerbe,"kilos de gazon par jour")
class omnivore(carnivore,herbivore):
def __init__(self,pv,ph,h):
carnivore.__init__(self,pv) # appel du constr de la classe m re
herbivore.__init__(self,ph)
self.__humain = h
teddy = omnivore(10,5,False)
teddy.devorer()
teddy.brouter()
module 8: Les exceptions
Les exceptions sont un moyen de g rer les instructions susceptibles de ne pas fonctionner
correctement.
Le m canisme des exceptions
1.
Instruction try-except
33
Syntaxe
try:
// Code
except:
// Code
S'il n'y a pas d'exception, alors
seule la clause try sera ex cut e.
Si une exception survient, la
clause try sera ignor e et la
clause except sera ex cut e.
Si l'exception n'est pas g r e,
l'ex cution s'arr te.
34
35
2. La clause else
Le code entre dans le bloc else uniquement si la clause try ne d clenche pas d'exception.
Exemple :
def division(a, b):
try:
d = a/b
except ZeroDivisionError:
print("Division par zero ! ")
else:
print("R sultat : ", d)
36
3. La clause Finally
Le code quelle contient sera ex cut dans tous les cas, quune exception ait t lev e par la
clause try ou pas.
Exemple :
37
D finir ses propres classes dexception
Pour d nir sa propre exception, il faut cr er une classe qui d rive dune classe dexception
existante, par exemple, la classe Exception.
Exemple :
class AucunChiffre(Exception):
pass
def conversion(s):
38
#conversion d'une cha ne de caract res en entier
if not s.isdigit():
raise AucunChiffre(s)
return int(s)
try:
s = "123a"
print(s, " = ", conversion(s))
except AucunChiffre as exc:
on affiche ici le commentaire associ la classe d'exception
et le message associ
print(AucunChiffre.__doc__, " : ", exc)