Initiation à la programmation python

Programming, Math · course

Voir tous les documents en programmation

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)