Vous êtes sur la page 1sur 51

Ini$a$on

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

DEV@LR - Ini7a7on Python Michle Sanguillon

Droul

Premiers pas
Dirents types dobjets
Quelques instruc7ons
Les fonc7ons
Les modules et packages
Les chiers
Les excep7ons
Les classes

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

pause
TP1
TP2
TP3
TP4
TP5
TP6
TP7
2

Premiers pas
U7lisa7on de python en mode interac$f :

pour calculer ou faire des choses simples


pour mieux connatre le langage (aide en ligne)
pour tester ses propres modules

Tapez la commande : python ou ipython

>>> 4+4
8
>>> # Commentaire
>>> print (Hello world !)
Hello world !


pour en sor7r : CTRL-D (unix) ou quit()

Octobre 2014

En 2.X : print est dabord un mot cl


>>> print Hello world !
Hello world !
Mais il vaut mieux prendre lhabitude
de lu7liser comme une fonc7on



DEV@LR - Ini7a7on Python Michle Sanguillon

Premiers pas
espaces
>>> 4+4
4+4
^
Indenta<onError: unexpected indent

Structure du programme
base sur lindenta$on


Faites aGen7on de ne pas


mlanger les espaces et les
tabula7ons !

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

Premiers pas
U7lisa7on de python en interprtant un chier script :
Programme quon va pouvoir ru7liser
Trace des exercices que nous allons faire

Editer le chier test.py :


# Premier programme python pour tester son u<lisa<on
print (Hello world !)
Vous tes prts ?
Cest par7

en mode interac7f
Excu7on en ligne de commande :
ou via un chier script !
python test.py
Hello world !


Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

Objets
En python, tout est objet

Une variable nest quun nom


pointant vers la rfrence dun objet.

Pour chaque variable, on aura


des mthodes associes et
parfois des aGributs !

Dirents types dobjets :


simples :

numriques & boolens


chaines de caractres

un peu plus complexes :


listes,
tuples,
dic7onnaires

encore plus complexes

ceux dnis dans des modules tlchargs (numpy, )


ceux que vous allez dnir

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

Les numriques
Objets non modiables (immutables)
>>> a = 1
>>> id(a)
4301085752
>>> b = a
>>> id(b)
4301085752
>>> a = a+1
>>> id(a)
4312332016
Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

10

Les boolens
2 valeurs : True ou False
>>> p = False
>>> type(p)
2.x : <type bool'>

3.x : <class bool>

Objets non modiables


Tous les types de variables


peuvent tre interprts
de manire boolenne.
Tout ce qui nest pas faux
est vrai !
Octobre 2014

Opra7ons :
Non
>>> p = False
>>> not(p)
True

Et
>>> 7>5 and 2>2
False

Ou
>>> 7>5 or 2>2
True

DEV@LR - Ini7a7on Python Michle Sanguillon

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

Les indices dbutent 0 !


DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon



>>> a[::-2]
RONB

13

Les chaines
de caractres

Autres mthodes

Concatna7on

>>> ma_chaine = Good + morning !


>>> print(ma_chaine)
Good morning !

Rp77on

>>> ma_chaine = Coucou ! * 3


>>> print(ma_chaine)
Coucou ! Coucou ! Coucou !

Octobre 2014

>>> ma_chaine = Bonjour


>>> len(ma_chaine) # longueur
7
>>> ma_chaine.upper() # majuscules
BONJOUR
>>> u in ma_chaine # recherche
True

Pour connatre les mthodes


associes un type dobjet,
u7lisez la commande dir :
>>> dir(str)
ou >>> dir(ma_chaine)
DEV@LR - Ini7a7on Python Michle Sanguillon

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>

Une liste peut contenir un objet


complexe

>>> ma_liste = [5, star, [3000, 12000]]


Cra7on dune liste vide pour typer


la variable

Les objets dune liste sont rendus


accessibles par lintermdiaire dun
index et peuvent tre dcoups :

>>> ma_liste = [5, star, [3000, 12000]]


>>> ma_liste[1]
star
>>> ma_liste[2][0]
3000
>>> ma_liste[::2]
[5, [3000, 12000]]

>>> ma_liste= []

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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 :

2.X >>> a = range(10)


3.X >>> a = list(range(10))
>>> print(a)
[0,1,2,3,4,5,6,7,8,9]

Pour connatre les mthodes associes un type


dobjet, u7lisez la commande dir :
>>> dir(list) ou >>> dir(stars)
Pour avoir de laide sur la classe ou sur une de ses
mthodes, u7lisez la commande help :
>>> help(list) ou >>> help(stars) ou >>> help(stars.pop)

DEV@LR - Ini7a7on Python Michle Sanguillon

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>

Les tuples fonc7onnent comme les


listes sauf quil ne peuvent pas tre
modis. Ils sont non modiables.

>>> mon_tuple [1][0] = 20


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support
item assignment

Il nont pas de mthodes associes mais


supportent les opra7ons usuelles de
squence :
>>> (1, 2) + (3, 4)

(1, 2, 3, 4)
>>> (1, 2) * 4


(1, 2, 1, 2, 1, 2, 1, 2)
>>> mon_tuple = (1, 2, 3, 4)
>>> mon_tuple[0]
1
>>> len(mon_tuple)

4

# Concatna7on
# Rp77on
# Indexa7on
# Longueur

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

18

Les dic7onnaires
Ce sont des tableaux associa7fs dnis
entre accolades
>>> dico= {Eric:tennis, Franck: basket}
>>> type(dico)

2.x : <type dict'>


3.x : <class dict>

Dclara7on dic7onnaire

>>> dico={}





# dclara7on
>>> dico= {Eric:tennis, Franck: basket} # dclara7on

Chaque objet est accd par sa cl


>>> dico[Franck]
basket

Les cls du dic7onnaire


sont des objets non
modiables => les cls
peuvent tre des nombres,
des boolens, des chaines
de caractres et/ou des
tuples

Les dic7onnaires sont des objets modiables


(mutables)

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

19

Les dic7onnaires
Ajout dun lment

Liste des cls et valeurs

Suppression dun lment

Test de lexistence dune cl:

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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 :

<, <=, >, >=, <>, !=, ==, is, is not

and, or, not

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

DEV@LR - Ini7a7on Python Michle Sanguillon

23

Instruc7ons
de contrle de ux
Boucles :
2 types de boucles :

Boucle numre : for


Boucle avec condi7on : while

Syntaxe :

for variable in liste_variables :


Instruc7ons
while condi7on :
Instruc7ons
Instruc7ons spciales :
break
con7nue
pass

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

26

Fonc7ons
La dni7on dune fonc7on permet :
de dcouper un code en morceaux
de pouvoir u7liser ceGe par7e de code plusieurs endroits

Une fonc7on est dnie avec le mot cl def :


>>> def ma_fonc7on(a,b):



# def nom(arguments):

produit de deux nombres # chaine de documenta7on

return a * b




# retourne le rsultat
>>> ma_fonc7on(5,4)
La docstring ou chaine de
20
documenta7on con7ent le
texte qui apparaitra lorsque

le dveloppeur fera un help
de ceGe fonc7on

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

Une fonc7on retourne toujours une valeur.


Une fonc7on sans return (procdure) retourne None.

Il existe des fonc7ons prdnies dans les


buil7ns (liGralement "fabriques dedans")
>>> dir(__buil7ns__)

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

28

TP tape 3
Ecrire une fonc7on qui eectue le calcul sur la
variable

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

La bibliothque standard de python fournit de nombreux modules


qui permeGent de raliser les tches courantes :
en 2.x : hGps://docs.python.org/2/library/index.html
en 3.x : hGps://docs.python.org/3/library/index.html

On peut aussi installer de nouveaux modules (pip) ou crer ses


propres modules
Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

Importer une fonc7on dans son propre espace de nom


>>> from os import getcwd
>>> print(getcwd())
'/Users/bourgeat/maVM/TPs

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

32

Les modules

Rpertoires dinstalla7on des modules :

Le chemin de recherche des modules : $PYTHONPATH

>>> import sys


>>> sys.path
['', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/
Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/
Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/
Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/
Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/
Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/
Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/
Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/
python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/
PyObjC', '/Library/Python/2.7/site-packages']

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

33

Les packages
Les packages sont des collec$ons de modules
Exemple : matplotlib

En ralit ce sont des rpertoires dans lesquels sont


stocks les modules
Le rpertoire appar7ent un rpertoire du chemin daccs des
modules
Le rpertoire con7ent le chier __init__.py

U7lisa7on dun package : via la commande import

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

34

TP tape 4
Modier la fonc7on pour renvoyer le calcul de la
racine carre (module de la bibliothque standard).

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

36

Les chiers
Ouverture

f=open(lename,mode)
Mode = r (read), w (write), a (append), b (binary)

Lecture

f.read() : retourne la totalit du chier dans une seule chaine


f.readline() : retourne 1 ligne du chier
f.readlines() : retourne une liste de lignes
f.read(n) : retourne au plus les n caractres suivants

Ecriture

f.write(chaine) : crit une chaine de caractres dans le chier


f.writelines(liste) : crit une liste de chaines dans le chier

Fermeture

f.close()

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

37

TP tape 5
Lire les valeurs calculer dans le chier vals.txt et
crire les rsultats dans le chier res.txt

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

39

Erreurs et excep7ons
Erreurs de syntaxe

Excep7ons : lies lexcu7on

On peut crer ses propres


noms dexcep7on

Nom de
lexcep7on

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

40

Erreurs et excep7ons
Grer une excep7on :
try:
instruc7on(s)
except:
instruc7on(s)
else:
instruc7on(s)
nally:
instruc7on(s)

Dclencher une excep7on :


raise

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

43

Classes
Les classes permeGent de dnir des types dobjets
Chaque classe possde :
un nom
des aGributs
des mthodes

Elles sont dnies laide du mot cl class :


>>> class Vehicule:

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

Dans la dni$on dune


mthode, le 1er paramtre
est une rfrence l'instance
en cours de la classe. Par
conven7on, cet argument est
toujours nomm self..

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

47

TP tape 7
Dnir la classe Carre :
qui a pour aGributs :
la longueur dun ct
La diagonale

qui a pour mthodes :


Le constructeur
La mthode getDiagonale qui renvoie la valeur de la diagonale

Crer des carrs dont la longueur du ct est dnie


dans le chier val.txt et crire la longueur de la
diagonale dans le chier res.txt
Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

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

DEV@LR - Ini7a7on Python Michle Sanguillon

50

Je vous remercie pour votre aGen7on

Octobre 2014

DEV@LR - Ini7a7on Python Michle Sanguillon

51

Vous aimerez peut-être aussi