Syst mes Distribu s
re
1
ann e Master
Travaux Pratiques I
Introdu tion au langage de programmation Python
ESEN - Universit de la Manouba
Amine DHRAIEF
Table des mati res
1 Avant Propos
4
1.1 Liens utiles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2 Prise en main
4
2.1 Hello Word ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3 Python en mode intera tif
5
3.1 input et print : le ture et a(cid:30) hage . . . . . . . . . . . . . . . . . . . . . . .
5
3.2 Les nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.3 Les ha nes de ara t res . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.4 Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.5 Les tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.6 Premier exemple : la suite de Fibona i . . . . . . . . . . . . . . . . . . . . .
11
3.7 Les instru tions de ontrle
. . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.7.1 L'instru tion if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.7.2 La bou le for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.7.3 La bou le while . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.7.4 La fon tion range() . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.7.5
break(), ontinue() et else() . . . . . . . . . . . . . . . . . . . . .
14
4 Les fon tions
15
4.1 R ursivit
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.2 Les arguments des fon tions . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
5 Les s ripts
17
5.1 Utilisation d'une fon tion l'int rieur d'un s ript
. . . . . . . . . . . . . . .
17
5.2 Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
5.3 Cr er son module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
5.4 Point d'entr e du s ript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
6 Les lasses
19
7 Exer i es
20
Table des (cid:28)gures
1
Hello World en mode intera tif
. . . . . . . . . . . . . . . . . . . . . . . . .
4
2
Hello World en mode s ript
. . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3
Ex ution du s ript helloworld.py . . . . . . . . . . . . . . . . . . . . . . . .
5
4
Le ture et a(cid:30) hage de variables . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
Utilisation des nombres en mode intera tif
. . . . . . . . . . . . . . . . . . .
Publicité
6
6
A(cid:30) hage d'une ha ne de ara t re . . . . . . . . . . . . . . . . . . . . . . .
7
7
Con at nation et r p tition d'une ha ne de ara t re . . . . . . . . . . . . .
7
8
Con at nation d'une ha ne de ara t re ave une variable . . . . . . . . . .
7
9
Indi e et extra tion de ha nes . . . . . . . . . . . . . . . . . . . . . . . . . .
8
10 Cha nes de ara t res immuables
. . . . . . . . . . . . . . . . . . . . . . . .
9
11 Cr ation d'une nouvelle ha ne partir d'une an ienne . . . . . . . . . . . .
9
12
Longueur d'une ha ne de ara t re . . . . . . . . . . . . . . . . . . . . . . .
9
13 D laration et manipulation des listes . . . . . . . . . . . . . . . . . . . . . .
10
14 Con at nation des listes et modi(cid:28) ation de leur ontenu . . . . . . . . . . . .
10
15
append() et len() d'une liste . . . . . . . . . . . . . . . . . . . . . . . . . .
11
16 D laration et manipulation des tuples . . . . . . . . . . . . . . . . . . . . .
11
17
La suite de Fibona i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
18 Exemple de l'instru tion if . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
19 Exemple de la bou le for
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
20 Exemple de la bou le while
. . . . . . . . . . . . . . . . . . . . . . . . . . .
14
21 Exemple de la fon tion range()
. . . . . . . . . . . . . . . . . . . . . . . . .
15
22 Exemple de d laration d'une fon tion . . . . . . . . . . . . . . . . . . . . .
16
23 Fon tion r ursive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
24 Passage d'arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
25 Arguments fa ultatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
26 Arguments fa ultatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
27 Utilisation des modules dans un s ript
. . . . . . . . . . . . . . . . . . . . .
18
28 Cr ation d'un module personnalis (op ration) . . . . . . . . . . . . . . . . .
18
29 Utilisation du module pr demment r
. . . . . . . . . . . . . . . . . . .
19
30 Utilisation des lasses en Python . . . . . . . . . . . . . . . . . . . . . . . .
20
Page 3
1 Avant Propos
Python est un langage de programmation open sour e, ob jet, multi-paradigme et multi-
plateformes. Python a t devlopp par Guido van Rossum. La premi re version de Python
(0.9.0) a t post sur le forum Usenet alt.sour es en f vrer 1991. Le nom de Python est
un hommage la s rie t l vis e britannique Monty Python's Flying Cir us. Guido van Ros-
sum est onsid r au sein de la ommunaut Python omme un Benevolent di tator for life
(BDFL) ((cid:19) di tateur bienveillant vie (cid:20)), e qui signi(cid:28)e qu'il ontinue suivre le d velop-
pement de Python et qu'il prend des d isions lorsque 'est n essaire.
1.1 Liens utiles
(cid:22) Site o(cid:30) iel de Python : https://www.python.org/
(cid:22) Instal ler Python : https://fr.wikihow. om/installer-Python
(cid:22) Tutoriel o(cid:30) iel de Python : https://do s.python.org/fr/3/tutorial/
(cid:22) Apprendre programmer ave Python 3, de G rard Swinnen : http://inforef.be/
swi/python.htm
(cid:22) Introdu tion Python 3, ours et exer i es orrig s, de Bob Cordeau : http://www.
iut-orsay.u-psud.fr/fr/departements/mesures_physiques/mphy_pedagogie.html
(cid:22) Introdu tion la programmation en Python, de R mi Coulom, Alain Taquet : http://
www.grappa.univ-lille3.fr/~ oulom/Python/index.html
2 Prise en main
2.1 Hello Word !
En mode intera tif :
Publicité
1. Lan er python depuis le shell Linux : $python
2. Ex uter le ode print('hello world') omme indiquer par la (cid:28)gure Fig. 1
Figure 1 (cid:21) Hello World en mode intera tif
En mode s ript :
1. Cr er un (cid:28) hier helloworld.py : $tou h helloworld.py
Page 4
2. Ins rer le ode pr sent par la (cid:28)gure Fig. 2
3. Ex uter le ode omme indiqu par la (cid:28)gure Fig. 3
Figure 2 (cid:21) Hello World en mode s ript
Figure 3 (cid:21) Ex ution du s ript helloworld.py
3 Python en mode intera tif
3.1 input et print : le ture et a(cid:30) hage
La fon tion input() permet de lire les donn es depuis l'entr e standard. La variable lu
est sto k omme une ha ne de ara t re. La fon tion print() sert a(cid:30) her des donn es
sur la sortie standard. La (cid:28)gure Fig. 4 illustre l'utilisation d'input() et de print()
Figure 4 (cid:21) Le ture et a(cid:30) hage de variables
Page 5
3.2 Les nombres
(cid:22) les op rateurs +, , , / fon tionnent omme dans C ou Pas al
(cid:22) les nombres entiers 1, 2, 3 sont de types int
(cid:22) les nombres d imaux 1.333, 5.6 sont de types float
(cid:22) // pour la division enti re
(cid:22) % pour le reste de la division enti re
(cid:22) est l'op rateur de puissan e
(cid:22) Le signe = est l'op rateur d'a(cid:27)e tation
La Fig. 5 illustre l'utilisation des nombres dans Python.
Figure 5 (cid:21) Utilisation des nombres en mode intera tif
3.3 Les ha nes de ara t res
La ha ne de ara t re 'Premi re ligne.\n Se onde ligne' est a(cid:27)e t e la variable s (voir
(cid:28)gure Fig.6). Le ara t re '\n' est interpr t omme retour la ligne uniquement ave la
fon tion print().
Dans la (cid:28)gure Fig. 7, deux ha nes de ara t res ' a he' et ' ou' sont r p t ave l'op -
rateur '*' et on at n es ave l'op rateur '+'
La on at nation d'une ha ne de ara t re ave une variable se fait aussi ave l'op rateur
'+' (voir la (cid:28)gure Fig.8).
Page 6
Figure 6 (cid:21) A(cid:30) hage d'une ha ne de ara t re
Figure 7 (cid:21) Con at nation et r p tition d'une ha ne de ara t re
Figure 8 (cid:21) Con at nation d'une ha ne de ara t re ave une variable
Page 7
En python un ara t re est une ha ne de longueur 1. Les ha nes sont index es, le premier
ara t re l'indi e 0 si on onsid re la ha ne de gau he droite. Dans le as ontraire, les
indi e sont n gatif, le premier tant -1. Il est aussi possible de d ouper (sli e) une ha ne
a(cid:28)n d'en extraire une sous- ha ne. En plus d'a der un l ment par son indi e, il est aussi
possible de (cid:19) tran her (cid:20) (sli e en anglais) une ha ne. A der une ha ne par un indi e
permet d'obtenir un ara t re, tran her permet d'obtenir une sous- ha ne (voir la (cid:28)gure
Fig9).
Figure 9 (cid:21) Indi e et extra tion de ha nes
Les ha nes de ara t res, en Python, ne peuvent pas tre modi(cid:28) es. On dit qu'elles
sont immuables (non-modi(cid:28)ables). A(cid:27)e ter une nouvelle valeur un indi e dans une ha ne
produit une erreur (voir la (cid:28)gure Fig. 10). Par ontre, on peut r er une nouvelle ha ne
de ara t re partir d'une an ienne par on at nation (voir la (cid:28)gure Fig. 11). La fon tion
len() renvoie la longueur d'une ha ne (voir la (cid:28)gure Fig. 12).
Page 8
Figure 10 (cid:21) Cha nes de ara t res immuables
Figure 11 (cid:21) Cr ation d'une nouvelle ha ne partir d'une an ienne
Figure 12 (cid:21) Longueur d'une ha ne de ara t re
Page 9
3.4 Les listes
Les types ombin s sont utilis s pour regrouper plusieurs valeurs. Les listes sont un
exemple de type ombin qui permet de regrouper plusieurs valeurs pas obligatoirement de
m me type. Une liste est un s rie d' l ment s par s par des virgules. Comme les ha nes
de ara t res, les listes peuvent tre indi es et d oup es (voir la (cid:28)gure Fig. 13) et g rent
aussi les op rations omme les on at nations. Toutefois, la di(cid:27) ren e des ha nes qui sont
immuables, il est possible de modi(cid:28)er le ontenu d'un ha ne (voir la (cid:28)gure Fig. 14).
Figure 13 (cid:21) D laration et manipulation des listes
Figure 14 (cid:21) Con at nation des listes et modi(cid:28) ation de leur ontenu
La m thode append() permet d'a jouter un nouvel l ment d'une liste. La m thode len()
s'applique aussi aux listes (voir la (cid:28)gure Fig. 15).
Page 10
Figure 15 (cid:21) append() et len() d'une liste
3.5 Les tuples
Les tuples (de l'anglais "Table UPLEt"), assez semblable aux listes mais immuables, non
modi(cid:28)ables et o upe moins d'espa e m moire que les listes. La (cid:28)gure Fig. 16
Figure 16 (cid:21) D laration et manipulation des tuples
3.6 Premier exemple : la suite de Fibona i
La (cid:28)gure Fig. 17 illustre un premier exemple d'un programme en Python qui al ul les
termes de la suite de Fibona i.
Cet exemple introduit les fon tionnalit s suivantes :
(cid:22) L'a(cid:27)e tation multiple : Les valeurs 0 et 1 sont a(cid:27)e t s simultan ment aux variables
a et b. Cette m thode est en ore utilis e la derni re ligne.
(cid:22) La bou le while : Elle s'ex ute tant que la ondition (i i : a < 10) reste vraie. En
Python, omme en C, tout entier di(cid:27) rent de z ro est vrai et z ro est faux.
(cid:22) L'indentation du orps de la bou le : Les instru tions sous Python doivent tre
indent (une tabulation ou des espa es). Toutes les lignes l'int rieur d'un m me blo
doivent tre indent au m me niveau.
Publicité
(cid:22) La fon tion print() : a(cid:30) he la valeur des param tres qui lui sont fournis.
Page 11
Figure 17 (cid:21) La suite de Fibona i
3.7 Les instru tions de ontrle
3.7.1 L'instru tion if
La syntaxe de if est pr sent e i-dessous. Il n'y pas d'instru tion ase ou siw h dans
Python. On obtient le m me r sultat ave une s quen e de if ... elif ... elif ...else
i f
o n d i t i o n :
e x u t
s i
o n d i t i o n e s t v r a i e
[ e l i f
o n d i t i o n 2 :
e x u t
s i
o n d i t i o n 2 e s t v r a i e
[ e l s e :
e x u t
s i
o n d i t i o n e s t
f a u s s e
La (cid:28)gure Fig. 18 pr sente un exemple de l'instru tion if.
3.7.2 La bou le for
la di(cid:27) ren e des autres langages de programmation ( omme le C par exemple), l'ins-
tru tion for en Python permet d'it rer sur des l ments d'une s quen e (liste,....), dans
l'ordre dans lequel ils apparaissent dans la s quen e. La syntaxe de la bou le for est pr sen-
t e i-dessous.
f o r n om _ v a r i a b l e i n e n s e m b l e _ v a l e u r :
i n s t r u t i o n s
La (cid:28)gure Fig. 19 pr sente un exemple de la bou le for.
Page 12
Figure 18 (cid:21) Exemple de l'instru tion if
Figure 19 (cid:21) Exemple de la bou le for
Page 13
3.7.3 La bou le while
La bou le while ex ute des ommandes tant qu'une ou plusieurs onditions sont vraies.
La syntaxe de la bou le while est pr sent e i-dessous.
wh i l e o n d i t i o n :
i n s t r u t i o n s
La (cid:28)gure Fig. 20 pr sente un exemple de la bou le while.
Figure 20 (cid:21) Exemple de la bou le while
3.7.4 La fon tion range()
Conjointement utilis e ave la bou le for, la fon tion range() permet d'it rer sur des
nombres. La (cid:28)gure Fig. 21 pr sente un exemple de la fon tion range().
3.7.5 break(), ontinue() et else()
L'instru tion break(), interrompt la bou le for ou while. Dans une bou le l'instru tion
else est ex ut e lorsqu'une bou le se termine alors que tous ses l ments ont t trait s ou
que la ondition devient fausse, mais pas lorsque la bou le est interrompue par une instru tion
break. On peut faire la di(cid:27) ren e entre un else ratta h e la bou le et non l'instru tion
if in lus dans une bou le gr e l'indentation. L'instru tion ontinue fait passer la bou le
son it ration suivante
Page 14
Figure 21 (cid:21) Exemple de la fon tion range()
4 Les fon tions
Une fon tion sous Python est d (cid:28)ni omme suit :
d e f n omD eL aF o n t i on ( l i s t e d e p a r a m t r e s ) :
. . .
b l o d ' i n s t r u t i o n s
. . .
r e t u r n r e s u l t a t
La ligne ontenant l'instru tion def se termine obligatoirement par ' :', omme 'est le
as pour if, for et while. En Python, une fon tion en renvoie pas obligatoirement de r sultat
et le return est ainsi fa ultatif. Dans e as on parle plutt de pro dure. Un exemple de
d laration et d'utilisation d'une fon tion est pr sent par la (cid:28)gure Fig. 22.
4.1 R ursivit
Un exemple de al ul de la fon tion fa torielle par r ursivit est pr sent par la (cid:28)gure
Fig. 23.
4.2 Les arguments des fon tions
Les arguments des fon tions peuvent tre des variables ou des fon tions de rappel appel es
aussi al lba k (voir la (cid:28)gure Fig. 24).
Page 15
Figure 22 (cid:21) Exemple de d laration d'une fon tion
Figure 23 (cid:21) Fon tion r ursive
Figure 24 (cid:21) Passage d'arguments
Page 16
On peut rendre un argument fa ultatif en pr isant une valeur par d faut, 'None' dans
l'exemple pr sent par la (cid:28)gure Fig. 25. La valeur par d faut est ras e si l'argument est
pr is .
Figure 25 (cid:21) Arguments fa ultatifs
5 Les s ripts
5.1 Utilisation d'une fon tion l'int rieur d'un s ript
Le s ript pr sent par la (cid:28)gure Fig. 26 a t dit sous Geany (https ://www.geany.org/)
Le s ript omporte trois parties : les deux fon tions ube() et volumeSphere(), et ensuite le
Figure 26 (cid:21) Arguments fa ultatifs
orps prin ipal du s ript qui appel volumeSphere().
Publicité
5.2 Les modules
Les modules sont des (cid:28) hiers qui regroupent des ensembles de fon tions. Un s ript Python
typique est onstitu e d'un programme prin ipal a ompagn de un ou plusieurs modules
Page 17
ontenant ha un les d (cid:28)nitions d'un ertain nombre de fon tions a essoires. La fon tion
import permet d'importer un module omme indiqu i-dessous
import m o d u l e 1
import m o d u l e 2
import m o d u l e 3 , m o d u l e 4
import permet d'importer toutes les fon tions d'un module (from math import *) ou
une fon tion parti uli re (from math import os).
Le s ript pr sent par la (cid:28)gure Fig. 27 pr sente une utilisation des modules dans des
s ripts.
Figure 27 (cid:21) Utilisation des modules dans un s ript
5.3 Cr er son module
Python permet de r er son propre module. Dans l'exemple i-dessous (Fig. 28) on d (cid:28)nit
un module qui e(cid:27)e tue des op rations math matiques l mentaires. La (cid:28)gure Fig. 29 illustre
l'utilisation du module pr demment d (cid:28)nit.
Figure 28 (cid:21) Cr ation d'un module personnalis (op ration)
5.4 Point d'entr e du s ript
L'instru tion if __ name__ == __ main __: pla la (cid:28)n d'un module sert d termi-
ner si le module est (cid:19) lan (cid:20) en tant que programme autonome (auquel as les instru tions
qui suivent doivent tre ex ut es), ou au ontraire utilis omme une biblioth que de lasses
import e ailleurs. Dans e as ette partie du ode est sans e(cid:27)et. Nous disposons ainsi d'un
Page 18
Figure 29 (cid:21) Utilisation du module pr demment r
m anisme int ressant, qui nous permet d'int grer des instru tions de test l'int rieur des
modules, m me si eux- i sont destin s tre import s dans d'autres s ripts.
6 Les lasses
La d (cid:28)nition d'une lasse sous Python se fait omme suit. Par onvention, le nom des
lasses sous Python ommen e par une ma jus ule.
l a s s N omD eL aC l a s s e :
a t t r i b u t _ 1
a t t r i b u t _ 2
a t t r i b u t _ n
me thode_1
me thode_2
methode_n
On instan ie un ob jet l'aide de l'op ration d'a(cid:27)e tation et on peut ainsi a der aux
attributs et aux m thodes de l'ob jet :
v a r=N omD eL aC l a s s e ( ) # i n s t a n i a t i o n d ' un o b j e t
p r i n t ( v a r . a t t r i b u t _ 1 ) # a s l ' a t t r i b u t d e l ' o b j e t
v a r . me thode_1 ( . . . , . . . ) # a s l a m t h o d e d e l ' o b j e t
Le premier argument des m thodes des lasses doit tre toujours l'instan e de la lasse
self. Une m thode ontient ainsi au moins un seul argument : self. La m thode onstru -
teur est d (cid:28)nit par def __ init __(self,...): : deux symboles d'unders ore '_' ensuite
init et deux symboles d'unders ore '_'. Une m thode onstru teur est ex ut e automati-
quement lorsque l'on instan ie un nouvel ob jet partir de la lasse. On y pla e tout e qui
semble n essaire pour initialiser automatiquement l'ob jet que l'on r e. La (cid:28)gure Fig. 30
pr sente un exemple de l'utilisation de la programmation orient ob jet en Python.
Page 19
Figure 30 (cid:21) Utilisation des lasses en Python
7 Exer i es
1. rire un s ript qui permet de saisir le pr nom et le nom de l'utilisateur et renvoie
"Bonjour", suivi du pr nom et nom
2. rire un s ript qui invite l'utilisateur entrer un nombre entier, puis qui a(cid:30) he le
arr de e nombre ainsi que sa ra ine arr . (N.B : La saisie d'un entier se fait par
int(input()). Pensez l'utilisation du module math).
3. rire un s ript qui invite l'utilisateur entrer deux notes l'une apr s l'autre, puis qui af-
(cid:28) he la moyenne de es deux notes. (N.B : La saisie d'un (cid:29)oat se fait par float(input()))
4. rire un s ript qui invite l'utilisateur entrer trois nombres s par s par une virgule,
Page 20
puis les a(cid:30) he dans l'ordre inverse de la saisie. (N.B : La saisie d'une liste s par e par
une virgule se fait par list(eval(input())))
5. rire un s ript qui invite l'utilisateur saisir un (cid:29)ottant. S'il est positif ou nul, le s ript
a(cid:30) he sa ra ine, sinon a(cid:30) he un message d'erreur.
6. rire un s ript qui al ule puis a(cid:30) he la somme des nombres impaires et la somme des
nombres paires ompris entre 1 et n, ave n tant une variable demand e l'utilisateur.
7. rire une module premier ontenant les fon tions suivantes :
(cid:22) isprime(n) : renvoie vrai si le nombre n est premier, 0 sinon.
(cid:22) primes(n) : a(cid:30) he tout les nombre premier entre 0 et n.
(cid:22) nextprime(n) : a(cid:30) he le premier nombre premier qui arrive apr s n.
Utiliser e module dans un s ript Python.
8. Soit l'arbores en e des pro essus pr sent e par la (cid:28)gure i-dessous :
Page 21
En utilisant le module os de Python :
(cid:22) Cr er ette arbores en e
P1 P2
(cid:22) Pour haque pro essus a(cid:30) hez le PID du pro essus et le PID de son p re.
Des informations sur le module os sont disponibles en ligne : https://do s.python.
org/fr/3/library/os.html.
Page 22