Systèmes Distribués

Programming · course

Browse all programmation documents

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

. . . . . . . . . . . . . . . . . . .

Advertisement

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 :

Advertisement

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.

Advertisement

(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().

Advertisement

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