systèmes distribués - esen
Post on 24-Jun-2022
23 Views
Preview:
TRANSCRIPT
Systèmes Distribués
1
ère
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� 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 ontr�le . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 �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� hage de variables . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 Utilisation des nombres en mode intera tif . . . . . . . . . . . . . . . . . . . 6
6 A� 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� 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, objet, 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) (� di tateur bienveillant à vie �), e qui signi�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
� Site o� iel de Python : https://www.python.org/
� Installer Python : https://fr.wikihow. om/installer-Python
� Tutoriel o� iel de Python : https://do s.python.org/fr/3/tutorial/
� Apprendre à programmer ave Python 3, de Gérard Swinnen : http://inforef.be/
swi/python.htm
� 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
� 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 :
1. Lan er python depuis le shell Linux : $python
2. Exé uter le ode print('hello world') omme indiquer par la �gure Fig. 1
Figure 1 � Hello World en mode intera tif
En mode s ript :
1. Créer un � hier helloworld.py : $tou h helloworld.py
Page 4
2. Insérer le ode présenté par la �gure Fig. 2
3. Exé uter le ode omme indiqué par la �gure Fig. 3
Figure 2 � Hello World en mode s ript
Figure 3 � Exé ution du s ript helloworld.py
3 Python en mode intera tif
3.1 input et print : le ture et a� 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� her des données
sur la sortie standard. La �gure Fig. 4 illustre l'utilisation d'input() et de print()
Figure 4 � Le ture et a� hage de variables
Page 5
3.2 Les nombres
� les opérateurs +,−, ∗, / fon tionnent omme dans C ou Pas al
� les nombres entiers 1, 2, 3 sont de types int
� les nombres dé imaux 1.333, 5.6 sont de types float
� // pour la division entière
� % pour le reste de la division entière
� ∗∗ est l'opérateur de puissan e
� Le signe = est l'opérateur d'a�e tation
La Fig. 5 illustre l'utilisation des nombres dans Python.
Figure 5 � 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�e tée à la variable s (voir
�gure Fig.6). Le ara tère '\n' est interprété omme retour à la ligne uniquement ave la
fon tion print().
Dans la �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 �gure Fig.8).
Page 6
Figure 6 � A� hage d'une haîne de ara tère
Figure 7 � Con aténation et répétition d'une haîne de ara tère
Figure 8 � 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�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 � tran her � (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 �gure
Fig9).
Figure 9 � Indi e et extra tion de haînes
Les haînes de ara tères, en Python, ne peuvent pas être modi�ées. On dit qu'elles
sont immuables (non-modi�ables). A�e ter une nouvelle valeur à un indi e dans une haîne
produit une erreur (voir la �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 �gure Fig. 11). La fon tion
len() renvoie la longueur d'une haîne (voir la �gure Fig. 12).
Page 8
Figure 10 � Chaînes de ara tères immuables
Figure 11 � Création d'une nouvelle haîne à partir d'une an ienne
Figure 12 � 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 �gure Fig. 13) et gèrent
aussi les opérations omme les on aténations. Toutefois, à la di�éren e des haînes qui sont
immuables, il est possible de modi�er le ontenu d'un haîne (voir la �gure Fig. 14).
Figure 13 � Dé laration et manipulation des listes
Figure 14 � Con aténation des listes et modi� ation de leur ontenu
La méthode append() permet d'ajouter un nouvel élément d'une liste. La méthode len()
s'applique aussi aux listes (voir la �gure Fig. 15).
Page 10
Figure 15 � 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�ables et o upe moins d'espa e mémoire que les listes. La �gure Fig. 16
Figure 16 � Dé laration et manipulation des tuples
3.6 Premier exemple : la suite de Fibona i
La �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 :
� L'a�e tation multiple : Les valeurs 0 et 1 sont a�e tés simultanément aux variables
a et b. Cette méthode est en ore utilisée à la dernière ligne.
� 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�érent de zéro est vrai et zéro est faux.
� 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.
� La fon tion print() : a� he la valeur des paramètres qui lui sont fournis.
Page 11
Figure 17 � La suite de Fibona i
3.7 Les instru tions de ontr�le
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 ond i t i on :
exé uté s i ond i t i on e s t v r a i e
[ e l i f ond i t i on2 :
exé uté s i ond i t i on2 e s t v r a i e ℄
[ else :
exé uté s i ond i t i on e s t f au s s e ℄
La �gure Fig. 18 présente un exemple de l'instru tion if.
3.7.2 La bou le for
À la di�é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.
for nom_variable in ensemble_valeur :
i n s t r u t i o n s
La �gure Fig. 19 présente un exemple de la bou le for.
Page 12
Figure 18 � Exemple de l'instru tion if
Figure 19 � 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.
while ond i t i on :
i n s t r u t i o n s
La �gure Fig. 20 présente un exemple de la bou le while.
Figure 20 � 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 �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�é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 � Exemple de la fon tion range()
4 Les fon tions
Une fon tion sous Python est dé�ni omme suit :
def nomDeLaFon tion( l i s t e de paramètres ) :
. . .
b lo d ' i n s t r u t i o n s
. . .
return 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 plut�t de pro édure. Un exemple de
dé laration et d'utilisation d'une fon tion est présenté par la �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 �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 allba k (voir la �gure Fig. 24).
Page 15
Figure 22 � Exemple de dé laration d'une fon tion
Figure 23 � Fon tion ré ursive
Figure 24 � 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 �gure Fig. 25. La valeur par défaut est é rasée si l'argument est
pré isé.
Figure 25 � 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 �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 � Arguments fa ultatifs
orps prin ipal du s ript qui appel volumeSphere().
5.2 Les modules
Les modules sont des � 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é�nitions d'un ertain nombre de fon tions a essoires. La fon tion
import permet d'importer un module omme indiqué i-dessous
import module1
import module2
import module3 , module4
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 �gure Fig. 27 présente une utilisation des modules dans des
s ripts.
Figure 27 � 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é�nit
un module qui e�e tue des opérations mathématiques élémentaires. La �gure Fig. 29 illustre
l'utilisation du module pré édemment dé�nit.
Figure 28 � 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 �n d'un module sert à détermi-
ner si le module est � lan é � 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�et. Nous disposons ainsi d'un
Page 18
Figure 29 � 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é�nition d'une lasse sous Python se fait omme suit. Par onvention, le nom des
lasses sous Python ommen e par une majus ule.
lass NomDeLaClasse :
attr ibut_1
attr ibut_2
attr ibut_n
methode_1
methode_2
methode_n
On instan ie un objet à l'aide de l'opération d'a�e tation et on peut ainsi a éder aux
attributs et aux méthodes de l'objet :
var=NomDeLaClasse ( ) # in s t a n i a t i o n d 'un o b j e t
print ( var . attr ibut_1 ) # a ès à l ' a t t r i b u t de l ' o b j e t
var . methode_1 ( . . . , . . . ) # a ès à l a méthode de 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é�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 objet à partir de la lasse. On y pla e tout e qui
semble né essaire pour initialiser automatiquement l'objet que l'on rée. La �gure Fig. 30
présente un exemple de l'utilisation de la programmation orienté objet en Python.
Page 19
Figure 30 � 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� 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-
� he la moyenne de es deux notes. (N.B : La saisie d'un �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� 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 �ottant. S'il est positif ou nul, le s ript
a� he sa ra ine, sinon a� he un message d'erreur.
6. É rire un s ript qui al ule puis a� 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 :
� isprime(n) : renvoie vrai si le nombre n est premier, 0 sinon.
� primes(n) : a� he tout les nombre premier entre 0 et n.
� nextprime(n) : a� 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 �gure i-dessous :
Page 21
P1 → P2
En utilisant le module os de Python :
� Créer ette arbores en e
� Pour haque pro essus a� 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
top related