Académique Documents
Professionnel Documents
Culture Documents
Python
Modules
calcul
scien7que
Monde
Objet
Modules
systme
Bases
Python
Sources:
- Guido
van
Rossums
tutorial
- Documenta7on
de
lafpy
(associa7on
francophone
python)
- Learning
Python
coll.
OREILLY
- Site
hGp://wikipython.ibuste.net
- Cours
Remy
Mozul
&
Michle
Sanguillon
Octobre
2014
Droul
Premiers
pas
Dirents
types
dobjets
Quelques
instruc7ons
Les
fonc7ons
Les
modules
et
packages
Les
chiers
Les
excep7ons
Les
classes
Octobre 2014
pause
TP1
TP2
TP3
TP4
TP5
TP6
TP7
2
Premiers
pas
U7lisa7on
de
python
en
mode
interac$f
:
>>>
4+4
8
>>>
#
Commentaire
>>>
print
(Hello
world
!)
Hello
world
!
pour
en
sor7r
:
CTRL-D
(unix)
ou
quit()
Octobre 2014
Premiers
pas
espaces
>>>
4+4
4+4
^
Indenta<onError:
unexpected
indent
Structure
du
programme
base
sur
lindenta$on
Octobre 2014
Premiers
pas
U7lisa7on
de
python
en
interprtant
un
chier
script
:
Programme
quon
va
pouvoir
ru7liser
Trace
des
exercices
que
nous
allons
faire
Octobre 2014
Objets
En
python,
tout
est
objet
Octobre 2014
Objets
Typage
dynamique
lors
de
laecta7on
(=)
>>>
a
=
2
>>>
type(a)
2.x
:
<type
'int'>
3.x
:
<class
'int'>
Octobre
2014
Conven7ons
:
Variables
:
ma_variable
Classes
:
MaClasse
Mthodes
:
maMethode
Constantes
:
MACONSTANTE
python
est
sensible
la
casse
!
DEV@LR
-
Ini7a7on
Python
Michle
Sanguillon
Les
numriques
En7ers
>>>
a
=
3
>>>
type(a)
2.x
:
<type
'int'>
3.x
:
<class
'int>
>>>
a
/
5
2.x
:
0
3.x
:
0.6
>>>
a
//
5
2.x
:
0
3.x
:
0
Octobre 2014
Rels
>>>
b
=
3.
>>>
type(b)
2.x
:
<type
oat'>
3.x
:
<class
oat>
>>>
b
/
5
0.6
Complexes
>>>
c
=
4
+
6j
>>>
type(c)
2.x
:
<type
complex'>
3.x
:
<class
complex>
>>>
c.real
4.0
Les
numriques
Opra7ons
:
aecta7on
:
=
oprateurs
:
+,
-,
*,
/,
//,
**,
%
priorit
des
oprateurs
:
(),
**,
*
et
/,
+
et
incrmenta7on
:
+=,
-=
Pour
plus
de
lisibilit
laissez
un
espace
avant
et
aprs
les
oprateurs
fonc7ons
intgres
:
abs,
oat,
int,
sum,
pow,
autres
fonc7ons
:
module
math
:
sqrt,
sin,
cos,
log
Octobre
2014
Les
numriques
Objets
non
modiables
(immutables)
>>>
a
=
1
>>>
id(a)
4301085752
>>>
b
=
a
>>>
id(b)
4301085752
>>>
a
=
a+1
>>>
id(a)
4312332016
Octobre
2014
10
Les
boolens
2
valeurs
:
True
ou
False
>>>
p
=
False
>>>
type(p)
2.x
:
<type
bool'>
Opra7ons
:
Non
>>>
p
=
False
>>>
not(p)
True
Et
>>>
7>5
and
2>2
False
Ou
>>>
7>5
or
2>2
True
11
Les
chaines
de
caractres
Expressions
entre
ou
ou
>>>
ma_chaine
=Bonjour
>>>
type(ma_chaine)
2.x
:
<type
str'>
3.x
:
<class
str>
>>>
print
(ma_chaine)
Bonjour
Octobre
2014
Caractres
spciaux
:
\,
\n
>>>
print(Il
m\a
dit
bonjour\n)
Il
ma
dit
bonjour
Indexa7on/dcoupage
>>>
ma_chaine[1]
o
12
Dcoupage
>>>
a=BONJOUR
a[index
dbut
:
index
n
de
dcoupage
:
pas
]
B
0
-7
0
-7
1
-6
O
1
-6
2
-5
N
2
-5
3
-4
J
3
-4
>>>a[-2]
U
>>>a[:-4]
BON
4
-3
O
4
-3
5
-2
U
5
-2
>>>a[1:]
ONJOUR
>>>a[1:4]
ONJ
6
-1
R
6
-1
>>>a[-2:]
UR
>>>
a[::2]
BNOR
7
0
index
de
dbut
index
dbut
invers
index
de
n
de
dcoupage
index
de
n
de
dcoupage
invers
>>>
a[1]
O
>>>a[:4]
BONJ
Octobre 2014
>>>
a[::-2]
RONB
13
Les
chaines
de
caractres
Autres mthodes
Concatna7on
Rp77on
Octobre 2014
14
Les
listes
Ce
sont
des
collec7ons
ordonnes
dobjets
qui
sont
indiqus
entre
crochets
>>>
ma_liste
=
[5,
star,
3.1416]
>>>
type(ma_liste)
2.x
:
<type
list'>
3.x
:
<class
list>
>>>
ma_liste=
[]
Octobre 2014
15
Les
listes
Quelques
mthodes
associes
:
>>> stars=[vega,HD232862,xiboo,aldebaran]
>>>
print(stars)
[vega,HD232862,xiboo,
aldebaran]
>>>
stars.pop(1)
HD232862
>>>
print(stars)
[vega,xiboo,
aldebaran]
>>>
stars.append(sirius)
[vega,xiboo,aldebaran,
siruis]
>>>
stars.sort()
[aldebaran,
sirius,
vega,xiboo]
>>>
del
stars[0]
>>>
print(stars)
[sirius,
vega,xiboo]
>>>
stars.reverse()
>>>
print(stars)
[xiboo,vega]
Octobre 2014
Fonc7on range :
16
Les
listes
Les
listes
sont
modiables
(mutables)
>>>
ma_liste[2][0]
=
20
>>>
a
=
[1,
2,
3]
>>>
id(a)
4301149384
>>>
b
=
a
>>>
id(b)
4301149384
>>>
a.append(4)
>>>
id(a)
4301149384
Octobre
2014
DEV@LR
-
Ini7a7on
Python
Michle
Sanguillon
17
Les
tuples
Ce
sont
des
collec7ons
ordonnes
dobjets
qui
sont
indiqus
entre
parenthses
>>>
mon_tuple=
(5,
star,
3.1416)
>>>
type(mon_tuple)
2.x
:
<type
tuple'>
3.x
:
<class
tuple>
#
Concatna7on
#
Rp77on
#
Indexa7on
#
Longueur
Octobre 2014
18
Les
dic7onnaires
Ce
sont
des
tableaux
associa7fs
dnis
entre
accolades
>>>
dico=
{Eric:tennis,
Franck:
basket}
>>>
type(dico)
Dclara7on
dic7onnaire
>>>
dico={}
#
dclara7on
>>>
dico=
{Eric:tennis,
Franck:
basket}
#
dclara7on
Octobre 2014
19
Les
dic7onnaires
Ajout
dun
lment
>>>
dico[Florent]=badminton
>>>
dico
{Eric:tennis,
Franck:
basket,
Florent=badminton}
>>>
del
dico[Franck]
Nombre
dlments
>>>
len(dico)
2
Octobre 2014
>>>
dico.keys()
[Eric
Florent]
>>>
dico.values()
[tennis,
badminton]
en
2.x
:
>>>
dico.has_keys(Eric)
True
en
3.x
:
>>>
Eric
in
dico.keys()
True
20
TP
tape
1
Ecrire
un
pe7t
programme
qui
permeGe
de
mul7plier
par
2
une
variable
saisie
au
clavier
(u7lisez
la
fonc7on
input
en
3.x
ou
raw_input
en
2.x)
et
dimprimer
le
rsultat
lcran
Octobre 2014
21
TP tape 1
Ecrire
un
pe7t
programme
qui
permeGe
de
mul7plier
par
2
une
variable
saisie
au
clavier
et
dimprimer
le
rsultat
lcran
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
#
Programme
dappren7ssage
de
python
x
=
int(input("Rentrer
la
valeur
de
votre
variable
:
"))
#
Saisie
de
la
variable
resultat
=
x
*
2
#
On
eectue
le
traitement
print
("Quand
votre
variable
vaut
"
+
str(x)
+
",
le
rsultat
vaut
"
+
str(resultat)
+
"
!")
#
On
imprime
le
rsultat
Octobre 2014
22
Instruc7ons
de
contrle
de
ux
Test
:
Exemple
:
Syntaxe
:
If
condi$on:
>>> if x == 'hello':
instruc$on(s)
elif
condi$on:
instruc$on(s)
else:
instruc$on(s)
Condi7ons
:
Instruc7on spciale :
print('hello
too!)
elif
x
==
'bonjour':
print('bonjour
aussi!)
else:
print(je
ne
comprends
pas
!)
AGen7on
lindenta$on
et
au
:
!
pass
Octobre
2014
23
Instruc7ons
de
contrle
de
ux
Boucles
:
2
types
de
boucles
:
Syntaxe :
Exemple
1
:
>>>
a
=
['hello',
'world']
>>>
for
val
in
a:
...
print(val)
hello
world
Exemple
2
:
>>>
a
=
['hello',
'world']
>>>
for
index
in
range(len(a)):
...
print(index,
a[index]
)
0
hello
1
world
Exemple
3
:
>>>
i
=
1
>>>
while
i
<=
5:
...
print(i)
...
i
=
i
+
1
AGen7on
lindenta$on
et
au
:
!
Octobre 2014
24
TP
tape
2
Rajouter
une
boucle
pour
itrer
sur
la
demande
de
nombre
et
le
calcul
du
rsultat,
et
ce
jusqu
quon
saisisse
le
nombre
0
Indiquez
si
le
rsultat
est
posi7f
ou
nga7f
Octobre 2014
25
TP
tape
2
Rajouter
une
boucle
pour
itrer
sur
la
demande
de
nombre
et
le
calcul
du
rsultat,
et
ce
jusqu
quon
saisisse
le
nombre
0.
Indiquez
si
le
rsultat
est
posi7f
ou
nga7f
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
#
Programme
dappren7ssage
de
python
x
=
1
#
Ini$alisa$on
de
x
while(x):
#
Boucle
tant
que
x
dirent
de
0
x
=
int(input("Rentrer
la
valeur
de
votre
variable
(tapez
0
pour
arrter)
:
"))
resultat
=
x
*
2
print
("Quand
votre
variable
vaut
"
+
str(x)
+
",
le
rsultat
vaut
"
+
str(resultat)
+
"
!")
if
(resultat
>
0):
print("Ce
rsultat
est
posi$f.")
elif
(resultat
<
0):
print("Ce
rsultat
est
nga$f.")
else:
print("Ce
rsultat
est
nul.
")
Octobre
2014
26
Fonc7ons
La
dni7on
dune
fonc7on
permet
:
de
dcouper
un
code
en
morceaux
de
pouvoir
u7liser
ceGe
par7e
de
code
plusieurs
endroits
Octobre 2014
27
Fonc7ons
Les
paramtres
peuvent
avoir
une
valeur
par
dfaut
>>>
def
ma_fonc7on(a=5,b=7):
return
a
*
b
>>>
ma_fonc7on(2)
14
#
def
nom(arguments):
#
retourne
le
rsultat
Octobre 2014
28
TP
tape
3
Ecrire
une
fonc7on
qui
eectue
le
calcul
sur
la
variable
Octobre 2014
29
TP
tape
3
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
#-------------------on
dnit
la
fonc$on
def
maFonc$on(t):
"""
Fonc$on
dveloppe
pour
mul$plier
un
nombre
par
deux
"""
image
=
2.
*
t
return
image
#--------------------
le
programme
principal
#
Programme
dappren7ssage
de
python
x
=
1
#
Ini7alisa7on
de
x
while(x):
#
Boucle
tant
que
x
dirent
de
0
x
=
int(input("Rentrer
la
valeur
de
votre
variable
(tapez
0
pour
arrter)
:
"))
resultat
=
maFonc$on(x)
print
("Quand
votre
variable
vaut
"
+
str(x)
+
",
le
rsultat
vaut
"
+
str(resultat)
+
"
!")
if
(resultat
>
0):
print("Ce
rsultat
est
posi7f.")
elif
(resultat
<
0):
print("Ce
rsultat
est
nga7f.")
else:
print("Ce
rsultat
est
nul.
")
Octobre
2014
30
Les
modules
Un
module
python
est
un
chier
(.py)
qui
con7ent
du
code
python
Il
fournit
un
moyen
facile
dorganiser
des
composants
Il
permet
de
regrouper
la
dni7on
de
fonc7ons,
de
structures
de
donnes,
de
classes
Il
permet
de
fournir
des
bibliothques
intgrer
dans
les
programmes
31
Les
modules
Le
nom
du
module
est
le
nom
du
chier
(sans
lextension
.py)
Pour
u7liser
un
module
ou
une
fonc7on
dun
module,
il
faut
limporter
dans
son
programme
:
Importer
un
module
avec
son
espace
de
noms
>>>
import
os
>>>
print(os.getcwd())
'/Users/bourgeat/maVM/TPs
Importer
toutes
les
fonc7ons
dun
module
sans
son
espace
de
noms
>>>
from
os
import
*
>>>
print(getcwd())
'/Users/bourgeat/maVM/TPs
Octobre 2014
32
Les modules
Octobre 2014
33
Les
packages
Les
packages
sont
des
collec$ons
de
modules
Exemple
:
matplotlib
Octobre 2014
34
TP
tape
4
Modier
la
fonc7on
pour
renvoyer
le
calcul
de
la
racine
carre
(module
de
la
bibliothque
standard).
Octobre 2014
35
TP
tape
4
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
import
math
#-------------------on
dnit
la
fonc7on
def
maFonc7on(t):
"""
Fonc7on
dveloppe
pour
mul7plier
un
nombre
par
deux
"""
image
=
math.sqrt(abs(t))
return
image
#--------------------
le
programme
principal
#
Programme
dappren7ssage
de
python
x
=
1
#
Ini7alisa7on
de
x
while(x):
#
Boucle
tant
que
x
dirent
de
0
x
=
int(input(
Rentrer
la
valeur
de
votre
variable
(tapez
0
pour
arrter)
:
))
resultat
=
maFonc7on(x)
print
(Quand
votre
variable
vaut
+
str(x)
+
,
le
rsultat
vaut
+
str(resultat)
+
!
)
Octobre
2014
36
Les
chiers
Ouverture
f=open(lename,mode)
Mode
=
r
(read),
w
(write),
a
(append),
b
(binary)
Lecture
Ecriture
Fermeture
f.close()
Octobre 2014
37
TP
tape
5
Lire
les
valeurs
calculer
dans
le
chier
vals.txt
et
crire
les
rsultats
dans
le
chier
res.txt
Octobre 2014
38
TP
tape
5
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
import
math
#-------------------on
dnit
la
fonc7on
def
maFonc7on(t):
"""
Fonc7on
dveloppe
pour
mul7plier
un
nombre
par
deux
"""
image
=
math.sqrt(abs(t))
return
image
#--------------------
le
programme
principal
f_in
=
open("vals.txt","r")
f_out
=
open("res.txt","w")
for
val
in
f_in.readlines():
x
=
int(val)
resultat
=
maFonc7on(x)
f_out.write("Quand
votre
variable
vaut
"
+
str(x)
+
",
le
rsultat
vaut
"
+
str(resultat)
+
"
!\n")
f_in.close()
f_out.close()
Octobre 2014
39
Erreurs
et
excep7ons
Erreurs
de
syntaxe
Excep7ons
:
lies
lexcu7on
Nom
de
lexcep7on
Octobre 2014
40
Erreurs
et
excep7ons
Grer
une
excep7on
:
try:
instruc7on(s)
except:
instruc7on(s)
else:
instruc7on(s)
nally:
instruc7on(s)
Octobre 2014
41
TP
tape
6
Tester
votre
programme
avec
dans
le
chier
vals.txt
une
ligne
contenant
une
chaine
de
caractres
et
constater
lexcep7on
Rajouter
la
ges7on
dune
excep7on
qui
permet
de
prendre
en
charge
la
lecture
de
quelque
chose
qui
nest
pas
un
nombre
Octobre 2014
42
TP
tape
6
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
import
math
#-------------------on
dnit
la
fonc7on
def
maFonc7on(t):
"""
Fonc7on
dveloppe
pour
mul7plier
un
nombre
par
deux
""
image
=
math.sqrt(abs(t))
return
image
#--------------------
le
programme
principal
f_in
=
open("vals6.txt","r")
f_out
=
open("res6.txt","w")
for
val
in
f_in.readlines():
try:
x
=
int(val)
except:
resultat
=
'NaN'
else:
resultat
=
maFonc7on(x)
f_out.write("Quand
votre
variable
vaut
"
+
val.strip(\n)+
",
le
rsultat
vaut
"
+
str(resultat)
+
"
!\n")
f_in.close()
f_out.close()
Octobre
2014
43
Classes
Les
classes
permeGent
de
dnir
des
types
dobjets
Chaque
classe
possde
:
un
nom
des
aGributs
des
mthodes
AGen7on
lindenta$on
et
au
:
!
44
Classes
>>>
class
Vehicule:
def__init__(self,
numero):
self.immatricula7on=numero
self.revisions=[]
def
setDerniereRevision(self,
date):
self.revisions.append(date)
def
getDerniereRevision(self):
if
self.revisions:
return
self.revisions[-1]
else:
returnAucune
rvision
ce
jour
def
acheCaracteris7ques(self):
print(Immatricula7on
=
+
self.immatricula7on)
>>>
scooter_1
=
Vehicule(1234
AAA34)
>>>
print(scooter_1.getDerniereRevision())
Aucune
rvision
ce
jour
>>>
scooter_1.
acheCaracteris7ques()
Immatricula7on
=
1234
AAA
34
Octobre
2014
45
Classes
Lhritage
se
dnit
lors
de
la
dclara7on
de
la
classe
>>>
class
Voiture(Vehicule):
def
__init__
(self,
numero,
nb_portes):
Vehicule.__init__(self,numero)
self.nb_portes
=
nb_portes
>>>
scooter_1
=
Vehicule("1234
AAA
34")
>>>
scooter_1.acheCaracteris7ques()
Immatricula7on
=
1234
AAA
34
>>>
voiture_1
=
Voiture("5678
BBB
34",
4)
>>>
voiture_1.acheCaracteris7ques()
Immatricula7on
=
5678
BBB
34
Octobre 2014
46
Classes
La
surcharge
est
faite
en
rednissant
une
fonc7on
dans
la
classe
:
>>>
class
Voiture(Vehicule):
def
__init__
(self,
numero,
nb_portes):
Vehicule.__init__(self,
numero)
self.nb_portes
=
nb_portes
def
acheCaracteris$ques
(self):
print(
Immatricula$on
=
+
self.immatricula$on)
print(
Nombre
de
portes
=
+
str(self.nb_portes))
>>>
voiture_1
=
Voiture("5678
BBB
34",
4)
>>>
voiture_1.acheCaracteris7ques()
Immatricula7on
=
5678
BBB
34
Nombre
de
portes
=
4
Octobre 2014
47
TP
tape
7
Dnir
la
classe
Carre
:
qui
a
pour
aGributs
:
la
longueur
dun
ct
La
diagonale
48
TP
tape
7
#!/usr/bin/python
#
-*-
coding:
u-8
-*-
import
math
#-------------------Class
Carre
class
Carre:
def
__init__(
self,
longueur):
self.cote
=
longueur
try:
self.diagonale
=
math.sqrt(2*longueur**2)
except:
raise
def
getDiagonale(
self):
return
self.diagonale
Octobre 2014
49
TP
tape
7
#--------------------
le
programme
principal
f_in
=
open("vals.txt","r")
f_out
=
open("res6.txt","w")
for
val
in
f_in.readlines():
try:
x
=
Carre(int(val))
except:
resultat
=
'NaN'
else:
resultat
=
x.getDiagonale()
msg
="Quand
votre
variable
vaut
"
+
val.strip(\n)
+
",
le
rsultat
vaut
"
+
str(resultat)
+
"
!\n"
f_out.write(msg)
f_in.close()
f_out.close()
Octobre 2014
50
Octobre 2014
51