You are on page 1of 27

Langage de Programmation Python

But de ce cours

Initiation la programmation avec

! Connatre et utiliser des schmas algorithmiques simples (parcours, recherches, ...) dans des structures de donnes diffrentes (tableaux et
fichiers)

Python
langage de programmation
Valrie Bellynck (2009), daprs un diaporama dAlain Bozzi (2008), lui-mme venant de celui de Bob Cordeau (2008)

! Connatre le langage de programmation Python ! Savoir utiliser les algorithmes de base et les adapter nimporte quel langage

Langage de Programmation Python


Cours/TDs/TPs de 18h Contrle
! 1 DS papier
Une Un

Programme - Script
programme
ou un

script est

! une suite dinstructions s'enchanant de manire squentielle pour rsoudre un problme donn.

instruction est
! Une instruction est compose dun ou plusieurs mots cls du langage pour effectuer une partie de la tche globale. ! Une instruction respecte une grammaire et une syntaxe.

Alain BOZZI - Valrie Bellynck

Compilation et interprtation
! Le programme est crit l'aide d'un logiciel est appel

Interprtation
! Dans la technique appele interprtation, le logiciel interprteur doit tre utilis chaque fois que l'on veut faire fonctionner le programme. ! Dans cette technique en effet, chaque ligne du programme source analys est traduite au fur et mesure en quelques instructions du langage machine, qui sont ensuite directement excutes.

diteur

(= sorte de traitement de texte spcialis)

programme source (ou code source).

! Il existe deux techniques principales pour effectuer la traduction d'un programme source en code binaire excutable par la machine :

Aucun programme objet n'est gnr.

la compilation et l'interprtation

Compilation
! La compilation consiste traduire la totalit du texte source en une fois. ! Le logiciel compilateur lit toutes les lignes du programme source et produit une nouvelle suite de codes que l'on appelle programme objet (ou code objet). ! Celui-ci peut dsormais tre excut indpendamment du compilateur et tre conserv tel quel dans un fichier, cest un fichier excutable.

Compilation et interprtation
Chacune de ces deux techniques a ses avantages et ses inconvnients :
! L'interprtation est idale lorsque l'on est en phase d'apprentissage du langage, ou en cours d'exprimentation sur un projet. ! Avec cette technique, on peut en effet tester immdiatement toute modification apporte au programme source, sans passer par une phase de compilation qui demande toujours du temps.

Par contre, lorsqu'un projet comporte des fonctionnalits complexes qui doivent s'excuter rapidement, la compilation est prfrable.
! Un programme compil fonctionnera toujours nettement plus vite que son homologue interprt, puisque dans cette technique l'ordinateur n'a plus (re)traduire chaque instruction en code binaire avant qu'elle puisse tre excute.
8

Compilation et interprtation
Certains langages modernes tentent de combiner les deux techniques afin de retirer le meilleur de chacune. C'est le cas de Python et aussi de Java.
! Lorsque vous lui fournissez un programme source, Python commence par le compiler ! pour produire un code intermdiaire, similaire un langage machine, que l'on appelle bytecode, ! lequel sera ensuite transmis un interprteur pour l'excution finale.

Les erreurs (suite)


2. Lerreur smantique ou logique
! Le programme s'excute parfaitement, (pas de message d'erreur) mais le rsultat n'est pas celui que vous attendiez. ! Un instruction ou une squence d'instructions de votre programme ne correspond pas l'objectif poursuivi. La smantique (la logique) est incorrecte. ! Rechercher des fautes de logique peut tre une tche ardue.

Exemple : erreur dans la condition du if (l'interprteur python la dtecte)


signe d'affectation (erreur) a la place du signe de comparaison if(a = 10):
! Du point de vue de l'ordinateur, le bytecode est trs facile interprter en langage machine. ! Cette interprtation sera donc beaucoup plus rapide que celle d'un code source.
9

if(a == 10): print "a gal 10" else: print "a diffrent de 10"!
11

print "a gal 10" else: print "a diffrent de 10"!

Les erreurs
1. Lerreur de syntaxe
! Python ne peut excuter un programme que si sa syntaxe est parfaitement
correcte. d'erreur.

Les erreurs (fin)


3. Lerreur lexcution
Le troisime type d'erreur est l'erreur en cours d'excution (Run-time error), qui apparat seulement lorsque votre programme fonctionne dj, mais que des circonstances particulires se prsentent (par exemple, votre programme essaie de lire un fichier qui n'existe plus). Ces erreurs sont galement appeles des exceptions, parce qu'elles indiquent gnralement que quelque chose d'exceptionnel s'est produit (et qui n'avait pas t prvu). Vous rencontrerez davantage ce type d'erreur lorsque vous programmerez des projets de plus en plus volumineux.

! Dans le cas contraire, le processus s'arrte et vous obtenez un message ! Le terme syntaxe se rfre aux rgles que les auteurs

du langage ont tablies pour la structure du programme.

10

12

Notion dalgorithme
Mthode de conception dun algorithme
1/ la prparation du traitement : recherche des donnes dentres et sorties ncessaires la rsolution du problme. 2/ le traitement : rsolution pas pas du problme pos, aprs une dcomposition en plusieurs tapes lmentaires que lon sait rsoudre. 3/ ldition des rsultats : affichage du traitement afin que lutilisateur puisse en prendre connaissance et traitement des erreurs.
13

Notion dalgorithme
Dmarche analytique 1/ prparation du traitement : quelles sont les donnes ?
! pi est une *constante elle ne sera pas demande lutilisateur. ! Les rayons rExt et rInt, variable dun disque lautre, il faut les demander lutilisateur. Ce sont les entres.

2/ le traitement : calcul de la surface dun disque


! a) lire les valeurs de rExt et rInt (lecture au clavier) ! b) calculer la surface du grand disque : sGrandDisque = pi * rExt * rExt"

*constante : variable dont le contenu de change pas pendant toute la dure dexcution du programme.
15

Notion dalgorithme
Etude dun exemple
Une machine dcoupe dans une plaque, des disques circulaires de rayon rExt, percs dun trou circulaire de rayon rInt < rExt et ne dbordant pas du disque. Quelle est la surface dun disque dcoup ?

Notion dalgorithme
! c) calculer la surface du trou : sDuTrou = pi * rInt * rInt ! d) calculer la surface du disque dcoup : surface = sGrandDisque sDuTrou

3/ dition du rsultat : affichage du rsultat


! On va afficher un message, cest une sortie ! !! print "Surface du disque :
",

surface!

Surface calculer

14

16

La prsentation des programmes


Un programme source est destin ltre humain.
! Pour en faciliter la lecture, il doit tre judicieusement comment. ! La signication de parties non triviales doit tre explique par un commentaire. ! Un commentaire commence par le caractre # et stend jusqu la n de la ligne : #--------------------- ! ! ! ! ! ! ! ! ! ! ! # Voici un commentaire ! #--------------------- ! ! But :

Les variables (suite)


Conventions sur les noms en gnral
donner de la lisibilit sur les noms et limiter les disfonctionnements entre les diffrentes plates-formes
(Unix, Window, Macintosh). !Jamais de caractres accentus !Jamais de blanc entre les mots

Syntaxe propose et applique


! Variable : nomDeVariable ! Sous-programme : nomFonction(..)

! ! ! !

! !

! !

n = 9 # En voici un autre!

Exemple
! Variable : valMin ! Sous-programme : ecrireChaine()
17 19

Les variables
Variable = conteneur d'information qui porte un nom = rfrence une adresse mmoire (informatiquement)
Les noms des variables sont conventionnellement crits en minuscule. Ils commencent par une lettre ou le caractre _, puis ventuellement, des lettres, des chiffres. La casse est significative (les caractres majuscules et minuscules sont distingus). Ils doivent tre diffrents des mots rservs de Python.

Les variables (fin)


Typage des variables
(spcifique Python) ! il n'est pas ncessaire de dfinir le type des variables avant de pouvoir les utiliser. ! il suffit d'assigner une valeur un nom de variable pour que celle-ci soit automatiquement cre avec le type qui correspond au mieux la valeur fournie. ! Par exemple :

n = 10

msg = "Bonjour"

euro = 6,55957

Python typera automatiquement ces trois variables :


! n sera de type entier (integer) ! msg sera de type chaine de caractres (string) ! euro sera de type rel (float)

Linstruction type(variable) permet de connatre le type dune variable print type(n)


18 20

Oprateurs et expression
oprateurs = symboles spciaux utiliss pour reprsenter des oprations mathmatiques simples, telles l'addition ou la multiplication. oprandes = valeurs combines l'aide des oprateurs.
! Les oprateurs attendent des oprandes de certains types et seulement ceux-l

Le type entier
Un type caractrise
! la place mmoire ncessaire pour mmoriser les lments de ce type ! les oprations quon peut faire sur les lments de ce type Oprations arithmtiques

Exemple dexpression :

oprateur

2 <= 8
premier oprande deuxime oprande

! Les oprateurs Python ne sont pas seulement les quatre oprateurs mathmatiques de base. ! Il faut ajouter :
!!l'oprateur ** pour l'exponentiation, !!des oprateurs logiques, !!des oprateurs agissant sur les chanes de caractres, !!des oprateurs effectuant des tests d'identit ou d'appartenance, !!etc.

! ! ! ! !

! ! ! ! !

! ! ! ! ! !

20 20 20 20 20 20

+ 3 - 3 * 3 ** 3 / 3 % 3

# 23

! ! !

# 17 ! # 60

# 8000 ! # 6 (division entire) # 2 (modulo) # 1099511627776L # 216L!


Le type entier fait partie des types dits simples!
23

Les entiers longs (seulement limits par la RAM)

! !
21

2 ** 40 ! 3 * 72L !

Les expressions boolennes


Deux valeurs possibles : False, True.
Oprateurs de comparaison : ==, !=, >, >=, <, <=

Le type flottant
Le type flottant est la seule faon de mmoriser les nombres dcimaux et les nombres rels

! !

2 > 8 ! 2 <= 8 < 15 !

# False # True

Les ottants sont nots avec un point dcimal ou en notation exponentielle :

Oprateurs logiques : not, or, and

! ! ! !
# True (ds le premier membre)

! !

2.718 ! 3e8 ! 6.023e23 20.0 / 3 ! 20.0 // 3!#


# 6.666666666666667 ! 6 (division entire force)

(3 == 3) or (9 > 24) ! (9 > 24) and (3 == 3)

Ils supportent les mmes oprations que les entiers, sauf :

# False (ds le premier membre) !

! !

Le type flottant fait partie des types dits simples


22 24

Les instructions
Instruction = action dun programme = opration de base dun langage de programmation Les actions courantes dpendent donc du langage et incluent (concernant Python)
! la dclaration de variables et l'attribution de valeurs (dfinition et affectation), ! le choix dexcuter une suite dinstructions ou une autre selon une condition, ! lexcution de boucles itratives ou conditionnelles, ! l'appel de procdures.

Laffectation (suite)
Affecter nest pas comparer !
laffectation a un effet mais na pas de valeur :

a = b ! ! !
! !

!
!

# effet : a reoit la valeur contenue dans b! # valeur de lexpression : aucune!

L'ordre dans lequel les instructions sont excutes dans un programme est appel flux de contrle ou flux d'excution.
Quand on met au point un programme parce quil ne fait pas ce quon veut, on simule le flux dexcution afin de reprer o ce que le programme fait faire est dcal par rapport ce quon aurait voulu.

la comparaison a une valeur mais na pas deffet :

a == b ! ! !
! !

!
!

# valeur de lexpression : True ou False! # effet : aucun!


27

Le flux de contrle varie chaque fois qu'un programme est excut, selon les valeurs dentre reues au moment de l'excution.
25

Laffectation
On affecte une valeur une variable en utilisant le signe
Dans une affectation, la partie de gauche reoit ou prend pour valeur la partie droite :

Instructions daffectation : diffrentes formes


=
Outre laffectation simple, on peut aussi utiliser les formes suivantes :

a = 4

! # forme de base !

! a += 2 ! # idem : a = a + 2 si a existe dj ! ! c = d = 8 ! # cibles multiples " ! ! # (affectation de droite gauche) ! ! e, f = 2.7, 5.1 # affectation de tuple (par position) ! ! e, f = f, e
# change les valeurs de e et f !

a = 2 ! ! !
! !

# prononcez : a "reoit" 2" # ou a "prend pour valeur" 2!

La valeur dune variable peut voluer au cours du temps (la valeur antrieure est perdue) :

! g, h = [G, H] # affectation de liste (par position) !

! !

a = a + 1 ! a = a - 1 !

# 3 (incrmentation) # 2 (dcmentation) !

26

28

Les entres / sorties


Il sagit de communiquer avec lordinateur et plus particulirement avec le programme.
Par exemple, lexcution de votre programme, vous voulez que lordinateur vous demande de saisir une premire valeur, puis une deuxime, et vous affiche la somme des 2 valeurs, leur diffrence et leur produit

Les sorties
Linstruction print permet dafficher des sorties lcran :

# suite aux entres prcdentes ! # par exemple a = 2.45 et b = 32

!
2.45 !

! ! ! !

! ! ! !

print print print print

a ! # "Somme : ", a + b ! # "Diffrence : ", a - b,! # "produit : ", a * b !#

! -29.55 ! 78.4!
34.45

29

31

Les entres
Linstruction raw_input() permet deffectuer une saisie. Le rsultat est toujours une chane de caractres que lon peut ensuite transtyper :

Les mots rservs de python 2.6


( entourer ceux quon a dj rencontr)
and def del elif else except esec finaly for from global if import in is lamda not or pass print raise return try while with yield

a1 = raw_input("Entrez un flottant : ") ! ! ! ! ! ! ! ! ! # a1 contient une chaine (ex :10.52)! a = float(a1) # transtypage en flottant ! # ou plus brivement : ! b = float(raw_input(" Entrez un autre flottant : "))!

as assert break class continue

30

32

Les modules
Le noyau de base de python contient des instructions et quelques fonctions de base, mais par exemple le calcul du sinus risque dtre compliqu Un module reprsente un ou des fichiers python (.py),
! il contient des instructions crites dans le langage Python. ! But : proposer des services comme la possibilit demployer :
!!des oprations mathmatiques (sin, cos, ...) !!ou des oprations graphiques (tracer une ligne,...) !!ou encore bien dautres oprations spcifiques (base de donnes, xml, ...)

33

Les modules (suite)


Dans le langage python pour utiliser un module on crit au dbut du programme :
from math import *" # importe la totalit des oprations du module" # autorise toutes les oprations mathmatiques usuelles! from math import sin, pi" # importe uniquement les oprations sur sin et pi ! ! # autorise seulement lutilisation de sin et pi! # Exemple! print sin(pi/4) # 0.70710678118654746! # Pour rappel! print type(pi) # affiche le type de pi => float
34

Actions conditionnelles (else)

Actions conditionnelles Actions itratives ou rptitives

Python

if (condition): code excut si condition est vraie else: code excut si condition est fausse instruction suivante

Observez!l'indentation!!!! Pas de condition pour l'instruction else


Valrie Bellynck (2009), daprs un diaporama dAlain Bozzi (2008), lui-mme venant de celui de Bob Cordeau (2008)
1 3

Actions conditionnelles (if)


!Utilises pour effectuer des tests sur une expression
ou le contenu dune variable. if (condition): code excut si condition est vraie instruction suivante (aprs les conditions)

Actions conditionnelles (elif)


if (condition_1): code excut si condition_1 est vraie elif(condition_2): code excut si condition_1 est fausse et condition_2 est vraie else: code excut si condition_1 et condition_2 sont fausses instruction suivante (aprs les conditions)

Observez!l'indentation!!!! Condition = clause boolenne Clause = expression


2

Observez!l'indentation!!!!

Oprateurs de comparaison
La condition value dans une action conditionnelle peut contenir les oprateurs de comparaison suivants : ! x == y # x est gal y ! x != y # x est diffrent de y ! x > y # x est plus grand que y ! x < y # x est plus petit que y ! x >= y # x est plus grand que, ou gal y ! x <= y # x est plus petit que, ou gal y
Que fait ce programme ?

Exemple
fumeur = raw_input("patient fumeur (oui ou non) ?") if fumeur == "oui": niveau_de_risque = 3 else: niveau_de_risque = 0 print niveau_de_risque

Oprateurs de comparaison
! Notez bien que l'oprateur de comparaison pour l'galit de deux
valeurs est constitu de deux signes gale et non d'un seul

Actions conditionnelles avec oprateurs logiques (and / or / not)


if (condition_1) and (condition_2):
code excut si condition_1 et condition_2 sont vraies

! Le signe gale utilis seul est un oprateur d'affectation,


et non un oprateur de comparaison. ! l'oprateur % est l'oprateur modulo : il calcule le reste d'une division entire.

else:
code excut si condition_1 ou condition_2 est fausse instruction suivante (aprs les conditions)

! Ainsi par exemple, a % 2 fournit le reste de la division de a par 2

Attention! la diffrence entre = et == = pour une affectation == pour une comparaison


6

Observez!l'indentation!!!!
8

Exemple avec ET (and), OU (or) et non (not)


Que fait ce programme ?
if (fumeur == "oui") and (age > 60): print "le patient est une personne ge qui fume !" if (fumeur == "oui") or (age > 60): print "le patient est une personne ge ou un fumeur!" if not(fumeur == "oui"):
# lexpression fumeur == oui pour valeur false # donc not (false) pour valeur true

Actions itratives

(= rptitives)

Il sagit de rpter plusieurs fois la ou les mmes actions (cette squence dactions est appele un bloc!ou boucle)

1.! soit on connait le nombre de fois davance, par exemple


2.!
soit dune liste (ou de lignes lues dans un fichier, ou dune ressource),

n fois

le nombre de fois correspond exactement au nombre dlments

et les actions effectuer sont lies tour tour chacun des lments de la liste

3.!

soit

le nombre de fois est inconnu au dpart,


et dpend dune condition calculable chaque itration (le nombre de fois peut ne pas tre identique dune xcution lautre : sa valeur peut tre modifie dans la boucle)

print "le patient est non fumeur!"

11

Exemple
Que fait ce programme ?
if (fumeur == "oui"): facteur_f = 2 else : facteur_f = 0 if (age > 60): facteur_a = 1 else : facteur_a = 0 niveau_de_risque = facteur_f + facteur_a if niveau_de_risque == 0: print "Le risque est nul !" if niveau_de_risque != 0: print "Il y a un risque !" if niveau_de_risque >= 3: print "Risque lev !"
10

Actions itratives

(= rptitives)

En Python, il ny a pas dinstruction for avec directement le nombre doccurrence. Les instructions permettant de commander et contrler le nombre ditration sont

! for !while
! une initialisation

li au parcours dune liste avec une condition explicite darrt

La mise en place de ces actions ncessite gnralement :

! une condition ! une incrmentation

12

Instruction for
Linstruction for est utilise pour parcourir un tableau de valeurs : for variable in [0,1,2,3,4]:
action
Initialisation Condition Incrmentation

Actions itratives : for


Laction for peut tre utilise de plusieurs manires :
# i prend pour contenu de 0 valeur - 1 # avec une incrmentation de 1 for v in range(valeur): action # i prend pour contenu de dbut fin - 1 # avec une incrmentation de 1 for v in range(debut,fin): action # i prend pour contenu de dbut fin - 1 # avec une incrmentation de pas for v in range(debut,fin,pas): action
15

La fonction range() est utilise pour construire un tableau de valeurs : for variable in range(dbut,fin,pas):
action
Initialisation Condition Incrmentation
13

Utilisation de for et de range()


for variable in range(dbut,fin,pas):
action Exemple 3 :

Actions itratives - exemples


for variable in range(dbut,fin,pas):
action Exemple 1 : for i in range (10) :
# i prend successivement les valeurs 0, 1 9

for i in range(5,55,5) :
# i prend successivement les valeurs 5, 10 55

print i Exemple 4 : for i in range(3, 'a', 3.14) :


# i prend successivement les valeurs 3, a et 3.14

print i Exemple 1 bis :

# affichage de la valeur

print i Exemple 4 bis : for i in [3, 'a', 3.14] :


# i prend successivement les valeurs 3, a et 3.14

print i
14

print "****** Affichage dune chaine *******" ch = raw_input("Saisir une chaine : ") lg = len(ch) # lg contient le nombre de caractres de la chane for i in range(lg) : print ch[i] # affichage du caractre
16

Actions itratives
for variable in range(dbut,fin,pas):
action Exemple 2 : print "****** Table de multiplication *******" mult = raw_input("Saisir la table afficher : ") for i in range(1,11) :
# i prend successivement les valeurs 1, 2 10

Instruction while
Linstruction while peut-tre utilise de manire plus sre, rpter un bloc dactions tant quune condition est vrifie :
V = V0 autres_initialisations

while condition_sur_V :
actions_ne_modifiant_pas_V
incrment_de_V
!!Linitialisation (ou le bloc dinitialisations) dfinit la variable contrle par la boucle en lui affectant une valeur (appele valeur initiale), et effectue ventuellement des initialisations dautres variables sur lesquelles ne portent pas la condition !!La condition ne prend en compte la valeur courante de la variable contrle !!Laction (ou le bloc dactions) modifie ventuellement les valeurs des variables pendant lexcution du bloc dinstructions, mais pas celle de la variable contrle !!Lincrment modifie la valeur de la variable contrle . Les valeurs contenue dans cette variable chaque boucle sont appeles les valeurs courantes 19

print mult , "x", i,"=", mult * i


# affiche successivement les multiples : mult * I Attention : il y a une faute

mult = int(raw_input("Saisir la table afficher : "))


17

Instruction while
Linstruction while est utilise pour rpter un bloc dactions tant quune condition est vrifie:
initialisation

Exemple d'utilisation d'un compteur


Que fait le programme suivant ? i = 0 # initilisation while (i < 5) : # condition print i i += 1 # incrmentation ou i = i + 1 La dernire ligne est une criture abrge pour linstruction

while condition :
action !!Linitialisation (ou le bloc dinitialisations) dfinit des variables et leur affecte des valeurs (appeles valeurs initiales) !!Laction (ou le bloc dactions) modifie les valeurs des variables pendant lexcution du bloc dinstructions, ces valeurs sont appeles les valeurs courantes !!La condition prend en compte les valeurs courantes des variables
18

i = i + 1 i est appel le compteur ou lincrment, 1 est le pas


20

Actions rptitives
a = raw_input("Choisir un nombre de 1 3 (zro pour quitter) >>> ") a = int(a) # transtypage (chane vers entier) while a != 0 : # l'oprateur != signifie "diffrent de" if a == 1 : print "Vous avez choisi un : " print "le premier, l'unique, l'unit ... " a = 0 # pour quitter la boucle elif a == 2 : print "Vous prfrez le deux : " print "la paire, le couple, le duo ... " a = 0 # pour quitter la boucle elif a == 3: print "Vous optez pour le plus grand des trois : " print "le trio, la trinit, le triplet ... " a = 0 # pour quitter la boucle else : print "Un nombre entre UN et TROIS, s.v.p. " a = raw_input("Choisir un nombre de 1 3 >>> ") a = int(a) # transtypage (chane vers entier)
21

Le module Turtle

Python
module Turtle

Le module Turtle contient des fonctions pour dplacer un curseur dans une fentre graphique en laissant une trace sous les endroits par lesquels il est pass. Pour utiliser le module turtle, on crit au dbut du programme :

Valrie Bellynck (2009), daprs un diaporama dAlain Bozzi (2008), lui-mme venant de celui de Bob Cordeau (2008)
1

Ne pas appeler le fichier turtle.py !!!!!


2

Les principales fonctions du module Turtle


# On efface tout et on recommence

Les principales fonctions du module Turtle


# choix dune couleur : chane prdfinie # ('red', 'blue', 'green', etc.) # criture dune chaine de caractres # (dlimite avec des " ou des ')

reset()
# Aller l'endroit de coordonnes x, y

color(couleur) goto(x, y)
# Avancer d'une distance donne

write(texte)

# Tourner gauche d'un angle donn (exprim # dessine un cercle de rayon donn en degrs)

left(angle)
# Tourner droite

circle(radius)

forward(distance)
# Reculer

# efface le dessin

right(angle)
# Choisir l'paisseur du trac

reset() # ou clear()
# se dplace la coord. x spcifie

backward(distance)
# Relever le crayon (pour pouvoir avancer sans dessiner)

width(paisseur) up()
# Abaisser le crayon(pour recommencer dessiner)
# Remplir un contour ferm l'aide de la couleur slectionne

setx(integer)
# se dplace la coord. y spcifie

down()
3

fill(1)

sety(integer)
4

Dfinition dune liste

Algorithmes sur les tableaux ou listes (suite de valeurs successives)

Python

Liste
dans le langage python on parle plutt de listes que de tableaux. suite de valeurs dont le type peut tre identique ou diffrent. chaque valeur et est repre par un indice.
maListe indice

5
0

3
1

8
2

4
3

9
4

Exemples :
maListe = [5,3,8,4,9] # 5 lments fruits = [pomme, orange, figue, raisin] listeDiverses = [toto, 5, fleurs, 32.50]
Valrie Bellynck (2009), daprs un diaporama dAlain Bozzi (2008), lui-mme venant de celui de Bob Cordeau1(2008)

Accs aux lments dune liste


!Accs
!laccs en lecture se fait de la manire suivante :
variable = nomListe[i]

Accs aux lments dune liste

!Exemple 2 :
maListe[5,8,12,4] maListe[1] = 3 # modification de la liste 8 -> 3 print maListe[1] # affiche 3

!laccs en criture se fait de la manire suivante :


nomListe[i] = valeur

!Exemple 1 :
maListe[5,8,12,4] valeur = maListe[0] print valeur # affiche 5
3

Parcours dune liste avec for!


maListe = [5,3,8,4,9]
for i in maListe : print i

Actions sur les listes


Dans le langage Python, il existe des fonctions qui permettent certaines actions sur les listes.

! sort() pour trier une liste


maListe = [5,3,8,4,9] maListe.sort() # [3,4,5,8,9]

couleurs = [cyan, magenta, jaune, noir]


for i in couleurs : print i

! append() pour ajouter un lment la fin dune liste


maListe = [3,4,5,8,9] maListe.append(12) # [3,4,5,8,9,12]
5 6

fruits = [pomme, orange, figue, raisin]


for i in fruits : print i

Actions sur les listes


!
remove() pour supprimer un lment une liste

Remplissage dune liste avec un for


#!/usr/bin/python # -*- coding: UTF-8 -*"*****************************" listeEntier = [] for i in range(5) : # liste vide

maListe = [3,4,5,8,9,12] maListe.remove(5) # [3,4,8,9,12]

reverse() pour inverser lordre dune liste

valeur = int(raw_input("Saisir un entier ")) # on ajoute la valeur en fin de liste listeEntier.append(valeur) # affichage de la liste lg = len(listeEntier) for i in range(lg) : print listeEntier[i]
7 8

maListe = [3,4,8,9,12] maListe.reverse() # [12,9,8,4,3]

# longueur de la liste

Recherche squentielle dans une liste


!La recherche dans une liste fait apparatre deux tapes :
!un parcours !une action conditionnelle
maListe indice

Recherche squentielle dans une liste non trie


liste = [5,8,3,7] lg = len(liste) # 4 i = 0 # indice de la liste initilis 0

5
0

3
1

8
2

4
3

9
4

# parcours action conditionnelle while (i < lg and liste[i] != elem) : i = i + 1 # incrmentation

!le parcours
while (indice < lg_maListe)

!laction conditionnelle
maListe[i] == elem
9

trouve = i < lg

!En sortie de boucle, nous avons :


soit i = lg et elem nest pas dans la liste soit i < lg et elem est dans la liste
10

Recherche squentielle dans une liste non trie


!Utilisation dune sentinelle : on place la valeur recherche (elem)
en fin de liste, ce qui permet de supprimer le teste de i < lg liste = [5,8,3,7,elem] i = 0 # initilisation # action conditionnellle i = i + 1 # incrmentation

Recherche squentielle dans une liste trie


!Dans une liste trie, il y a une relation dordre : liste[i-1] <= liste[i] !Nous devons en tenir compte dans notre algorithme de recherche.
liste = [3,5,7,8] lg = len(liste) # 4 i = 0 # initilisation # parcours et action conditionnellle while (i < lg and liste[i] < elem) : i = i + 1 # incrmentation trouve = i < lg and liste[i] == elem

while (liste[i] != elem) :

trouve = i < lg

!En sortie de boucle, nous avons :


soit liste[i] = elem avec i = lg => elem nest pas dans la liste soit liste[i] = elem avec i < lg => elem est dans la liste
11

!En sortie de boucle, nous avons :


soit i = lg => elem nest pas dans la liste soit i < lg et liste[i] = elem => elem est dans la liste
12

Les sous-programmes
sous-programme =
suite nomme dinstructions, que lon peut appeler chaque fois que ncessaire

Notions de modularit

Python

2 types de sous-programmes :

!la fonction : suite dinstructions effectuant un calcul.


Le rsultat du calcul est retourn ou renvoy par linstruction : return nom_Variable ou expression

!la procdure : suite dinstructions pour effectuer une tche.


Il ny a pas linstruction return donc pas de rsultat retourn. On parlera toujours de fonction. Si elle ne retourne pas de valeur (pas dinstruction return) ce sera une procdure.

Un sous-programme dpend de valeurs entres en paramtre Dfinition dun sous-programme en Python


Valrie Bellynck (2009-2010), daprs un diaporama dAlain Bozzi (2008), lui-mme venant de celui de Bob Cordeau (2008)
1

def nomFonction(param1, param2, ...) : suite dinstructions


Attention lindentation en Python : cest elle qui dlimite le bloc dinstructions 2

Les procdures - un exemple


Exemple :
Squence minimale dinstructions pour tracer un carr avec le module Turtle :

Les procdures
Dfinition dun sous-programme en Python

def nomFonction(param1, param2, ...) :


suite dinstructions Soit, dans lexemple du carr : def dessineCarre() : for i in range(4): forward(100) left(90)
Ce sous-programme
! ne contient pas linstruction return, il ne retourne pas de valeur, cest donc une procdure. ! ne contient pas de paramtres.
3 4

for i in range(4): forward(100) left(90)


On peut regrouper ces instructions dans une fonction que lon nommera dessineCarre()

Les procdures paramtres


Introduction dun paramtre :
! on veut pouvoir changer la longueur du ct et utiliser la mme procdure

Lappel dune procdure


Utilisation dun sous-programme dans un script Python
#!/usr/bin/python # -*- coding: UTF-8 -*from Turtle import * # dfinition de la fonction def dessineCarre(cote): for i in range(4): # pour les 4 cots forward(cote) # pour la longueur de chaque cot rigth(90) # pour tourner # appel de la fonction dessineCarre(100)
5 6

Soit, dans lexemple du carr :


def dessineCarre(cote) : for i in range(4): forward(cote) left(90)
Ce sous-programme
! est une procdure (ne contient pas dinstruction return) ! contient un paramtre.

Les fonctions
Exemple 2 :
def carre(val): return val * val

Lappel dune fonction


Utilisation dun sous-programme dans un script Python
#!/usr/bin/python # -*- coding: UTF-8 -*from Turtle import * longueur = int(raw_input("Entrez # dfinition de la fonction def dessineCarre(cote): for i in range(4): # pour forward(cote) # pour rigth(90) # pour def carre(val): return val * val def estPair(val):

la longueur d'cot : "))

Exemple 3 :
def estPair(val): return val % 2 ==0

un entier

les 4 cots la longueur de chaque cot tourner

Exemple 4 :
def messagerie(email,texte):

un boolen

une chane

# rend la valeur au carr

return "<a href=mailto:" + email + ">"

+ texte + "</a>"

Ces sous-programmes contiennent linstruction return, ils retournent respectivement un entier pour lexemple 2, un boolen pour lexemple 3, une chane de caractre pour lexemple 4, ce sont donc des fonctions.

return val % 2 ==0 # rend vrai si la valeur est paire ,faux sinon # appel de la fonction dessineCarre(longueur) if(estPair(longueur)): write ("La surface du carr, " + carre(longueur) + ", est paire. " )
7 8

Les modules
!Contenu dun module
!Regroupement de variable et de fonctions. !Le but dun module est de proposer des oprations
sur des domaines diffrents.

Les modules
import nomFichier et from nomFichier import *
! import nomFichier ncessite de prfixer les fonctions, sinon il se produit une erreur NameError. ! Si dans le module mDessin on trouve la fonction carre(largCote), il faut lutiliser de la manire suivante : import mDessin mDessin.carre(100) ! Dans le cas de from mDessin import *, le prfixage nest plus ncessaire, on utilise le module de la manire suivante : from mDessin import * carre(100)
9 10

!Cration et utilisation dun module


!dfinir des fonctions dans un fichier et le nommer mNomFichier.py !crer un autre fichier et utiliser les diffrentes fonctions en prenant
soin de mettre au dbut du fichier la ligne suivante : import

mNomFichier ou

from mNomFichier import *

Communication avec le systme


Les contenus de fichier

Python
Les fichiers et le module OS
Valrie Bellynck (2009), daprs un diaporama dAlain Bozzi (2008), lui-mme venant de celui de Christophe Morvan (2006)
1

Pourquoi faire ? Par exemple


assurer la persistance des donnes. Contrairement la RAM , les donnes stockes dans un fichier sont prennes, recopier le contenu dun fichier en le corrigeant (encodage)

Les fonctions de base du noyau de Python permettent


de lire, et crire dans un fichier de crer un nouveau fichier de modifier le contenu dun fichier de concevoir des programmes rutilisables pour remdier de problmes du des contenus de fichiers

Communication avec le systme


Les rpertoires
Pourquoi faire ?
automatiser des tches sur des listes de fichiers Cest la motivation initiale des langages de scripts et la raison de ce nom script

Les fichiers
Utilisation des fichiers
Pour manipuler les fichiers, il faut :
1. crer une variable logique de type fichier (descripteur de fichier) et ouvrir le fichier soit en mode lecture ou criture. 2. effectuer le traitement (copie dune liste dans le fichier, copie dun fichier dans une liste, ...) 3. fermer le fichier en fin de traitement

Ces fonctions sont contenues dans le module OS Elles permettent


de crer ou supprimer un fichier ou un dossier de changer le nom dun lment de parcourrir la liste des lments dun rpertoire de chercher un lment dun rpertoire ou tous les lments plus vieux quune date de corriger automatiquement les contenus dune liste de fichiers
3

Les fichiers
1/ crer une variable logique de type fichier (descripteur de fichier) et ouvrir le fichier soit en mode lecture ou criture.

Les fichiers
2/ effectuer le traitement, comme ici : la copie du fichier dans une liste
maListe = [] # dclaration dune liste vide

f = open(futilisateur.txt,r) f : variable de type fichier, (typage automatique fait par python) open () : fonction qui permet :

# lecture de toutes les lignes du fichier (readlines avec un s) lesLignes = f.readlines() for i in lesLignes :

louverture dun fichier pass en paramtre : ici futilisateur.txt de spcifier par un mode les oprations qui seront permises ici : r pour read, on ne pourra donc que lire le fichier.
5

maListe.append(i)

Les fichiers
Remarques importantes :
Vous avez du observer que le fichier futilisateurs.txt ntait pas
utilis dans le traitement. On louvre et puis cest tout.

Les fichiers
Ecriture dune liste dans un fichier
noms = [nadge, ludo, marie, alain] # ouverture f = open(futilisateurs.txt, w) # traitement for i in noms : f.write(i)

En fait f est une variable qui pointe sur le fichier futilisateurs.txt.


Pour illustrer cela, pensez la laisse dun chien.

*ATTENTION : comme ces fonctions sont natives dans le noyau de python, il ne faut pas faire limport du module os
7

# fermeture du fichier du fichier f.close()


8

Quelques modes sur les fichiers


r w a # ouvert en lecture # ouvert en criture-crasement # ouvert en criture-ajout

Quelques fonctions sur les fichiers


# lecture de lensemble du fichier point par f sous forme dune chane de caractres f.read() # retourne une chane dau plus taille caractres lus dans le fichier partir de la position courante. f.read(taille) # lecture du fichier point par f ligne par ligne sous la forme dune chane de caractres f.readline()

r+ # ouvert en lecture/criture w+ # ouvert en lecture/criture-crasement a+ # ouvert en lecture/criture-ajout


# lecture de lensemble du fichier point par f sous la forme dune liste de chane de caractres f.readlines()
9 10

Les fonctions du module os


Attention => from os import * pour les utiliser

Exemple
Que fait le script suivant ?

getcwd() # retourne le rpertoire courant chdir(rep) # se place dans le rpertoire rep rename(src,dest) # renomme src en dest remove(chemin) et rmdir(rep) # supprime le rpertoire rep mkdir(rep) # cre le rpertoire rep listdir(rep) # liste les chiers ou les rpertoires dans rep system(cde) # excute la commande cde

rename(prog.py,tp3.py) mkdir(u:nmonRepnpythonntp5) system(cat /proc/pci |grep ati > log)

11

12

Les fonctions du module os.path


split(chemin) # fournit le tuple (repertoire, join(chemin,...) # fournit un nom complet :
# fichier)

Exemple
Lister larborescence dun rpertoire avec listdir()
#! /usr/bin/python # -*- coding: UTF-8 -*from os import * rep = getcwd() # retourne le rpertoire courant print "Le rpertoire courant est : ", rep chdir(rep) # se place dans le rpertoire rep listRep = [] # liste les chiers ou les rpertoires dans rep listeRep = listdir(rep) for i in listeRep: print i
14

/plus/de/un/rep/unFichier

exists(chemin) # vrai si chemin existe isfile(chemin) # vrai si chemin est un chier isdir(chemin) # vrai si chemin est un rpertoire walk(chemin,fonc,arg)
La fonction os.walk(path) cre un gnrateur de triplets (root, dirs, files) dans l'arborescence de path. Un triplet est gnr par rpertoire visit. root reprsente le chemin d'accs du rpertoire visit. dirs est la liste des sousrpertoires du rpertoire root et files est la liste des fichiers du rpertoire root. Voir http://docs.python.org/library/os.html#os.walk
13

Exemple
Lister larborescence dun rpertoire avec os.walk()

Gadget
Utiliser le module time pour tester la rapidit de 2 fonctions import time def compare(arg): a = time.clock()
# premire fonction tester, avec arg comme paramtre

import os.path def listdirectory(path): fichier=[] for root, dirs, files in os.walk(path): for i in files: fichier.append(os.path.join(root, i)) return fichier

fonction1(arg) b = time.clock()
# deuxime fonction tester, avec arg comme paramtre

fonction2(arg) c = time.clock() return b-a, c-b print compare('c:/python24') # pour appel avec Rsultat, par exemple : (1.0782314512039937, 1.0392410208560028) ## : les 2 fonctions se valent...
15

arg='c:/python24'

16

Mmo de fonctions Python


Manuel de rfrence des fonctions de base : http://docs.python.org/library/functions.html

Entres/sorties
raw_input(invite) n=int(ch) Affiche le texte contenu dans invite et rcupre la chane tape au clavier Met la conversion de la chane contenue dans ch dans un entier, puis cet entier dans la variable n

Chanes
len(ch) Rend un entier dont la valeur est le nombre de caractres de la chane ch

Turtle
forward(100) left(90) color(red) width(1) up() down() goto(-50,0) Avance de 100 Tourne gauche de 90 Passe en rouge la couleur de la trace Dfini lpaisseur du trait 1 pt Lve le crayon (dplacements ultrieurs sans laisser de trace) Baisse le crayon (dplacements ultrieurs avec trace) Dplace le curseur la position (-50,0) (lorigine du plan est au centre)

Listes
li.append(red) li.insert(i,red) li.sort() li.remove(red) li.reverse() len(li) range(4) Allonge la liste avec la chane red Insre (=ajoute) chane red la position i de la liste li Trie les lments de la liste li Supprime la valeur red des lments de la liste li Retourne lordre des lments de la liste li Rend un entier dont la valeur est le nombre dlments de la liste li Construit une liste avec les valeurs : 0, 1, 2, 3 (en sarrtant < 4)

Fichiers
f=open(nomfic,m) f.close() f.read(taille) f.readlines() f.readline() f.write(ch) Construit un descripteur f sur le fichier nomfic dans le mode m Ferme le fichier point par le descripteur f Lit taille caractres du fichier dcrit par f, et met la chane ainsi obtenue dans une chane Lit toutes les lignes du fichier dcrit par f, et les mets dans une liste de chanes Lit la ligne courante du fichier pointe par le descripteur f, et la met dans une chane Ecrit la chane ch (ou le convertit en chane si cest un nombre) dans le fichier dcrit par f

You might also like