Programmation Débutant Python

27
1 Initiation à la programmation avec Python langage de programmation Valérie Bellynck (2009), d’après un diaporama d’Alain Bozzi (2008), lui-même venant de celui de Bob Cordeau (2008) 2 Alain BOZZI - Valérie Bellynck Langage de Programmation Python Cours/TDs/TPs de 18h Contrôle 1 DS papier 3 Langage de Programmation Python But de ce cours Connaître et utiliser des schémas algorithmiques simples (parcours, recherches, ...) dans des structures de données différentes (tableaux et fichiers) Connaître le langage de programmation Python Savoir utiliser les algorithmes de base et les adapter à n’importe quel langage 4 Programme - Script Un programme ou un script est une suite d’instructions s'enchaînant de manière séquentielle pour résoudre un problème donné. Une instruction est Une instruction est composée d’un ou plusieurs mots clés du langage pour effectuer une partie de la tâche globale. Une instruction respecte une grammaire et une syntaxe.

description

Cours d'initiation à Python

Transcript of Programmation Débutant Python

Page 1: Programmation Débutant Python

1

Initiation à la programmation avec Python

langage de programmation

Valérie Bellynck (2009), d’après un diaporama d’Alain Bozzi (2008),

lui-même venant de celui de Bob Cordeau (2008)

2 Alain BOZZI - Valérie Bellynck

Langage de Programmation Python

Cours/TDs/TPs de 18h

Contrôle •  1 DS papier

3

Langage de Programmation Python

But de ce cours •  Connaître et utiliser des schémas algorithmiques simples (parcours,

recherches, ...) dans des structures de données différentes (tableaux et fichiers)

•  Connaître le langage de programmation Python

•  Savoir utiliser les algorithmes de base et les adapter à n’importe quel langage

4

Programme - Script

Un programme ou un script est •  une suite d’instructions s'enchaînant de manière séquentielle

pour résoudre un problème donné.

Une instruction est •  Une instruction est composée d’un ou plusieurs mots clés

du langage pour effectuer une partie de la tâche globale.

•  Une instruction respecte une grammaire et une syntaxe.

Page 2: Programmation Débutant Python

5

Compilation et interprétation

•  Le programme est écrit à l'aide d'un logiciel éditeur (= sorte de traitement de texte spécialisé)

est appelé programme source (ou code source).

•  Il existe deux techniques principales pour effectuer la traduction d'un programme source en code binaire exécutable par la machine :

la compilation et l'interprétation

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 désormais être exécuté indépendamment du compilateur et être conservé tel quel dans un fichier, c’est un fichier exécutable.

7

Interprétation

•  Dans la technique appelée interprétation, le logiciel interpréteur 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 exécutées.

Aucun programme objet n'est généré.

8

Compilation et interprétation

Chacune de ces deux techniques a ses avantages et ses inconvénients : •  L'interprétation est idéale lorsque l'on est en phase d'apprentissage

du langage, ou en cours d'expérimentation sur un projet.

•  Avec cette technique, on peut en effet tester immédiatement toute modification apportée au programme source, sans passer par une phase de compilation qui demande toujours du temps.

Par contre, lorsqu'un projet comporte des fonctionnalités complexes qui doivent s'exécuter rapidement, la compilation est préférable. •  Un programme compilé fonctionnera toujours nettement plus vite que son

homologue interprété, puisque dans cette technique l'ordinateur n'a plus à (re)traduire chaque instruction en code binaire avant qu'elle puisse être exécutée.

Page 3: Programmation Débutant Python

9

Compilation et interprétation

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 intermédiaire, similaire à un langage machine, que l'on appelle bytecode,

•  lequel sera ensuite transmis à un interpréteur pour l'exécution finale.

•  Du point de vue de l'ordinateur, le bytecode est très facile à interpréter en langage machine.

•  Cette interprétation sera donc beaucoup plus rapide que celle d'un code source.

10

Les erreurs

1. L’erreur de syntaxe •  Python ne peut exécuter un programme que si sa syntaxe est parfaitement

correcte.

•  Dans le cas contraire, le processus s'arrête et vous obtenez un message d'erreur.

•  Le terme syntaxe se réfère aux règles que les auteurs du langage ont établies pour la structure du programme.

11

if(a = 10): print "a égal à 10" else: print "a différent de 10"!

if(a == 10): print "a égal à 10" else: print "a différent de 10"!

Les erreurs (suite)

2. L’erreur sémantique ou logique •  Le programme s'exécute parfaitement, (pas de message d'erreur) mais le

résultat n'est pas celui que vous attendiez.

•  Un instruction ou une séquence d'instructions de votre programme ne correspond pas à l'objectif poursuivi. La sémantique (la logique) est incorrecte.

•  Rechercher des fautes de logique peut être une tâche ardue.

Exemple : erreur dans la condition du if (l'interpréteur python la détecte) signe d'affectation (erreur) a la place du signe de comparaison

12

Les erreurs (fin)

3. L’erreur à l’exécution Le troisième type d'erreur est l'erreur en cours d'exécution (Run-time error),

qui apparaît seulement lorsque votre programme fonctionne déjà, mais que des circonstances particulières se présentent (par exemple, votre programme essaie de lire un fichier qui n'existe plus).

Ces erreurs sont également appelées des exceptions, parce qu'elles indiquent généralement que quelque chose d'exceptionnel s'est produit (et qui n'avait pas été prévu).

Vous rencontrerez davantage ce type d'erreur lorsque vous programmerez des projets de plus en plus volumineux.

Page 4: Programmation Débutant Python

13

Notion d’algorithme

Méthode de conception d’un algorithme 1/ la préparation du traitement :

recherche des données d’entrées et sorties nécessaires à la résolution du problème.

2/ le traitement : résolution pas à pas du problème posé, après une décomposition en plusieurs étapes élémentaires que l’on sait résoudre.

3/ l’édition des résultats : affichage du traitement afin que l’utilisateur puisse en prendre connaissance et traitement des erreurs.

14

Notion d’algorithme

Etude d’un exemple Une machine découpe dans une plaque, des disques circulaires de rayon

rExt, percés d’un trou circulaire de rayon rInt < rExt et ne débordant pas du disque.

Quelle est la surface d’un disque découpé ?

Surface à calculer

15

Notion d’algorithme

Démarche analytique 1/ préparation du traitement : quelles sont les données ?

•  pi est une *constante elle ne sera pas demandée à l’utilisateur.

•  Les rayons rExt et rInt, variable d’un disque à l’autre, il faut les demander à l’utilisateur. Ce sont les entrées.

2/ le traitement : calcul de la surface d’un 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 durée d’exécution du programme.

16

Notion d’algorithme

•  c) calculer la surface du trou : sDuTrou = pi * rInt * rInt

•  d) calculer la surface du disque découpé : surface = sGrandDisque – sDuTrou

3/ édition du résultat : affichage du résultat •  On va afficher un message, c’est une sortie

! ! ! print "Surface du disque : ", surface!

Page 5: Programmation Débutant Python

17

La présentation des programmes

Un programme source est destiné à l’être humain. •  Pour en faciliter la lecture,

il doit être judicieusement commenté.

•  La signification de parties non triviales doit être expliquée par un commentaire.

•  Un commentaire commence par le caractère # et s’étend jusqu’à la fin de la ligne :

#--------------------- !! ! ! ! ! # Voici un commentaire !! ! ! ! ! #--------------------- !! ! ! !! ! ! ! ! n = 9 # En voici un autre!

18

Les variables

Variable = conteneur d'information qui porte un nom = référence à une adresse mémoire (informatiquement)

Les noms des variables sont conventionnellement écrits en minuscule.

Ils commencent par une lettre ou le caractère _, puis éventuellement, des lettres, des chiffres.

La casse est significative (les caractères majuscules et minuscules sont distingués).

Ils doivent être différents des mots réservés de Python.

19

Les variables (suite)

Conventions sur les noms en général •  But : donner de la lisibilité sur les noms et limiter

les disfonctionnements entre les différentes plates-formes (Unix, Window, Macintosh). !Jamais de caractères accentués

!Jamais de blanc entre les mots

Syntaxe proposée et appliquée •  Variable : nomDeVariable

•  Sous-programme : nomFonction(..)

Exemple •  Variable : valMin

•  Sous-programme : ecrireChaine(…)

20

Les variables (fin)

Typage des variables (spécifique à Python) •  il n'est pas nécessaire de définir 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 créée 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 caractères (string)

•  euro sera de type réel (float)

L’instruction type(variable) permet de connaître le type d’une variable

print type(n)

Page 6: Programmation Débutant Python

21

Opérateurs et expression

opérateurs = symboles spéciaux utilisés pour représenter des opérations mathématiques simples, telles l'addition ou la multiplication.

opérandes = valeurs combinées à l'aide des opérateurs.

•  Les opérateurs attendent des opérandes de certains types et seulement ceux-là

Exemple d’expression :

•  Les opérateurs Python ne sont pas seulement les quatre opérateurs mathématiques de base.

•  Il faut ajouter : !!l'opérateur ** pour l'exponentiation, !!des opérateurs logiques,

!!des opérateurs agissant sur les chaînes de caractères,

!!des opérateurs effectuant des tests d'identité ou d'appartenance,

!!etc.

2 <= 8premier opérande deuxième opérande

opérateur

22

Les expressions booléennes

Deux valeurs possibles : False, True.

Opérateurs de comparaison : ==, !=, >, >=, <, <=

2 > 8 ! # False !! ! ! 2 <= 8 < 15 ! # True

Opérateurs logiques : not, or, and

(3 == 3) or (9 > 24) # True (dès le premier membre) !! (9 > 24) and (3 == 3) # False (dès le premier membre) !

23

Le type entier

Un type caractérise •  la place mémoire nécessaire pour mémoriser les éléments de ce type

•  les opérations qu’on peut faire sur les éléments de ce type

Opérations arithmétiques

! 20 + 3 # 23 !! ! ! 20 - 3 # 17 !! ! ! 20 * 3 # 60 !! ! ! 20 ** 3 # 8000 !! ! ! 20 / 3 # 6 (division entière) !! ! ! 20 % 3 # 2 (modulo)

Les entiers longs (seulement limités par la RAM)

2 ** 40 ! # 1099511627776L !! ! ! 3 * 72L ! # 216L!

Le type entier fait partie des types dits “simples”!

24

Le type flottant

Le type flottant est la seule façon de mémoriser les nombres décimaux et les nombres réels

Les flottants sont notés avec un ≪ point décimal ≫ ou en notation exponentielle :

2.718 !! ! ! 3e8 !! ! ! 6.023e23

Ils supportent les mêmes opérations que les entiers, sauf :

20.0 / 3 ! # 6.666666666666667 !

! ! ! 20.0 // 3!# 6 (division entière forcée) !

Le type flottant fait partie des types dits “simples”

Page 7: Programmation Débutant Python

25

Les instructions

Instruction = action d’un programme

= opération de base d’un langage de programmation

Les actions courantes dépendent donc du langage et incluent (concernant Python) •  la déclaration de variables et l'attribution de valeurs (définition et affectation),

•  le choix d’exécuter une suite d’instructions ou une autre selon une condition,

•  l’exécution de boucles itératives ou conditionnelles,

•  l'appel de procédures.

L'ordre dans lequel les instructions sont exécutées dans un programme est appelé flux de contrôle ou flux d'exécution. Quand on met au point un programme parce qu’il ne fait pas ce qu’on veut,

on simule le flux d’exécution afin de repérer où ce que le programme fait faire est décalé par rapport à ce qu’on aurait voulu.

Le flux de contrôle varie à chaque fois qu'un programme est exécuté, selon les valeurs d’entrée reçues au moment de l'exécution.

26

L’affectation

On affecte une valeur à une variable en utilisant le signe =

Dans une affectation, la partie de gauche reçoit ou prend pour valeur la partie droite :

a = 2 ! # prononcez : a "reçoit" 2 ! ! ! ! # ou a "prend pour valeur" 2!

La valeur d’une variable peut évoluer au cours du temps (la valeur antérieure est perdue) :

a = a + 1 ! # 3 (incrémentation) !! ! ! a = a - 1 ! # 2 (décémentation) !

27

L’affectation (suite)

Affecter n’est pas comparer !

l’affectation a un effet mais n’a pas de valeur :

a = b !! ! ! # effet : a reçoit la valeur contenue dans b!! ! ! # valeur de l’expression : aucune!

la comparaison a une valeur mais n’a pas d’effet :

a == b !! ! ! # valeur de l’expression : True ou False!! ! ! # effet : aucun!

28

Instructions d’affectation : différentes formes

Outre l’affectation simple, on peut aussi utiliser les formes suivantes :

a = 4 ! # forme de base !! a += 2 ! # idem à : a = a + 2 si a existe déjà !! 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 !! g, h = [’G’, ’H’] # affectation de liste (par position) !

Page 8: Programmation Débutant Python

29

Les entrées / sorties

Il s’agit de communiquer avec l’ordinateur et plus particulièrement avec le programme.

Par exemple,

à l’exécution de votre programme, vous voulez que l’ordinateur

vous demande de saisir une première valeur, puis une deuxième,

et vous affiche la somme des 2 valeurs, leur différence et leur produit

30

Les entrées

L’instruction raw_input() permet d’effectuer une saisie. Le résultat est toujours une chaîne de caractères que l’on peut ensuite transtyper :

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

31

Les sorties

L’instruction print permet d’afficher des sorties à l’écran :

# suite aux entrées précédentes !

# par exemple a = 2.45 et b = 32 !! ! print a ! # 2.45 !

! ! print "Somme : ", a + b ! # 34.45 !! ! print "Différence : ", a - b,! # -29.55 !! ! print "produit : ", a * b ! # 78.4!

32

and def finaly in print yield

as del for is raise

assert elif from lamda return

break else global not try

class except if or while

continue esec import pass with

Les mots réservés de python 2.6

(… entourer ceux qu’on a déjà rencontré)

Page 9: Programmation Débutant Python

33

Les modules

Le noyau de base de python contient

des instructions et quelques fonctions de base,

mais par exemple le calcul du sinus risque d’être compliqué…

Un module représente un ou des fichiers python (.py), •  il contient des instructions écrites dans le langage Python.

•  But : proposer des services comme la possibilité d’employer : !!des opérations mathématiques (sin, cos, ...)

!!ou des opérations graphiques (tracer une ligne,...)

!!ou encore bien d’autres opérations spécifiques (base de données, xml, ...)

34

Les modules (suite)

Dans le langage python pour utiliser un module on écrit au début du programme : from math import *

# importe la totalité des opérations du module # autorise toutes les opérations mathématiques usuelles!

from math import sin, pi # importe uniquement les opérations sur sin et pi !

! # autorise seulement l’utilisation de sin et pi!

# Exemple!print sin(pi/4) # 0.70710678118654746!

# Pour rappel!print type(pi) # affiche le type de pi => float

Page 10: Programmation Débutant Python

1

Python Actions conditionnelles

Actions itératives ou répétitives

Valérie Bellynck (2009),

d’après un diaporama d’Alain Bozzi (2008),

lui-même venant de celui de Bob Cordeau (2008)

2

Actions conditionnelles (if)

• Utilisées pour effectuer des tests sur une expression ou le contenu d’une variable.

if (condition):

code exécuté si condition est vraie instruction suivante (après les conditions)

Observez!l'indentation!!!! Condition = clause booléenne Clause = expression

3

Actions conditionnelles (else)

if (condition):

code exécuté si condition est vraie else: code exécuté si condition est fausse instruction suivante

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

4

Actions conditionnelles (elif)

if (condition_1):

code exécuté si condition_1 est vraie elif(condition_2):

code exécuté si condition_1 est fausse et condition_2 est vraie

else: code exécuté si condition_1 et condition_2 sont fausses

instruction suivante (après les conditions)

Observez!l'indentation!!!!

Page 11: Programmation Débutant Python

5

Opérateurs de comparaison

La condition évaluée dans une action conditionnelle peut

contenir les opérateurs de comparaison suivants :

•  x == y # x est égal à y

•  x != y # x est différent 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

6

Opérateurs de comparaison

•  Notez bien que l'opérateur de comparaison pour l'égalité de deux

valeurs est constitué de deux signes « égale » et non d'un seul

•  Le signe « égale » utilisé seul est un opérateur d'affectation,

et non un opérateur de comparaison.

•  l'opérateur % est l'opérateur modulo : il calcule le reste

d'une division entière.

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

Attention!à la différence entre = et == = pour une affectation == pour une comparaison

7

Exemple

Que fait ce programme ?

fumeur = raw_input("patient fumeur (oui ou non) ?")

if fumeur == "oui":

niveau_de_risque = 3

else:

niveau_de_risque = 0

print niveau_de_risque

8

Actions conditionnelles avec opérateurs logiques

(and / or / not)

if (condition_1) and (condition_2):

code exécuté si condition_1 et condition_2 sont vraies else: code exécuté si condition_1 ou condition_2 est fausse instruction suivante (après les conditions)

Observez!l'indentation!!!!

Page 12: Programmation Débutant Python

9

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 âgée qui fume !"

if (fumeur == "oui") or (age > 60):

print "le patient est une personne âgée ou un fumeur!"

if not(fumeur == "oui"): # l’expression fumeur == “oui” à pour valeur false # donc not (false) à pour valeur true

print "le patient est non fumeur!"

10

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é !"

11

Actions itératives (= répétitives)

Il s’agit de répéter plusieurs fois la ou les mêmes actions

(cette séquence d’actions est appelée un bloc!ou boucle)

1.  soit on connait le nombre de fois d’avance, par exemple n fois

2.  soit le nombre de fois correspond exactement au nombre d’éléments

d’une liste (ou de lignes lues dans un fichier, ou d’une ressource),

et les actions à effectuer sont liées tour à tour à chacun des éléments de la liste

3.  soit le nombre de fois est inconnu au départ,

et dépend d’une condition calculable à chaque itération

(le nombre de fois peut ne pas être identique d’une éxécution à l’autre :

sa valeur peut être modifiée dans la boucle)

12

Actions itératives (= répétitives)

En Python, il n’y a pas d’instruction for avec directement le nombre d’occurrence.

Les instructions permettant de commander et contrôler le nombre d’itération sont

•  for lié au parcours d’une liste

• while avec une condition explicite d’arrêt

La mise en place de ces actions nécessite généralement :

•  une initialisation

•  une condition

•  une incrémentation

Page 13: Programmation Débutant Python

13

Instruction for

L’instruction for est utilisée pour

parcourir un tableau de valeurs :

for variable in [0,1,2,3,4]: action

Initialisation Condition Incrémentation

La fonction range() est utilisée pour

construire un tableau de valeurs :

for variable in range(début,fin,pas): action

Initialisation Condition Incrémentation

14

Utilisation de for et de range()

for variable in range(début,fin,pas): action

Exemple 3 :

Exemple 4 :

Exemple 4 bis :

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

print i

for i in range(3, 'a', 3.14) : # i prend successivement les valeurs 3, a et 3.14

print i

for i in [3, 'a', 3.14] : # i prend successivement les valeurs 3, a et 3.14

print i

15

Actions itératives : for

L’action for peut être utilisée de plusieurs manières :

# i prend pour contenu de 0 à valeur - 1 # avec une incrémentation de 1 for v in range(valeur): action

# i prend pour contenu de début à fin - 1 # avec une incrémentation de pas for v in range(debut,fin,pas): action

# i prend pour contenu de début à fin - 1 # avec une incrémentation de 1 for v in range(debut,fin): action

16

Actions itératives - exemples

for variable in range(début,fin,pas): action

Exemple 1 :

Exemple 1 bis :

print "****** Affichage d’une chaine *******" ch = raw_input("Saisir une chaine : ") lg = len(ch) # lg contient le nombre de caractères de la chaîne for i in range(lg) : print ch[i] # affichage du caractère

for i in range (10) : # i prend successivement les valeurs 0, 1 … 9

print i # affichage de la valeur

Page 14: Programmation Débutant Python

17

Actions itératives

for variable in range(début,fin,pas): action

Exemple 2 :

Attention : il y a une faute… mult = int(raw_input("Saisir la table à afficher : "))

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

print mult , "x", i,"=", mult * i # affiche successivement les multiples : mult * I

18

Instruction while

L’instruction while est utilisée pour

répéter un bloc d’actions tant qu’une condition est vérifiée:

initialisation while condition : action

!!L’initialisation (ou le bloc d’initialisations) définit des variables et leur

affecte des valeurs (appelées valeurs initiales)

!!L’action (ou le bloc d’actions) modifie les valeurs des variables

pendant l’exécution du bloc d’instructions,

ces valeurs sont appelées les valeurs courantes

!!La condition prend en compte les valeurs courantes des variables

19

Instruction while L’instruction while peut-être utilisée de manière plus sûre,

répéter un bloc d’actions tant qu’une condition est vérifiée :

V = V0 autres_initialisations

while condition_sur_V : actions_ne_modifiant_pas_V incrément_de_V

!!L’initialisation (ou le bloc d’initialisations) définit la variable contrôlée par la boucle en

lui affectant une valeur (appelée valeur initiale), et effectue éventuellement des

initialisations d’autres variables sur lesquelles ne portent pas la condition

!!La condition ne prend en compte la valeur courante de la variable contrôlée

!!L’action (ou le bloc d’actions) modifie éventuellement les valeurs des variables

pendant l’exécution du bloc d’instructions, mais pas celle de la variable contrôlée

!!L’incrément modifie la valeur de la variable contrôle . Les valeurs contenue dans cette

variable à chaque boucle sont appelées les valeurs courantes

20

Exemple d'utilisation d'un compteur

Que fait le programme suivant ?

La dernière ligne est une écriture abrégée pour l’instruction

i = i + 1

i est appelé “le compteur” ou l’incrément, 1 est “le pas”

i = 0 # initilisation

while (i < 5) : # condition

print i

i += 1 # incrémentation ou i = i + 1

Page 15: Programmation Débutant Python

21

Actions répétitives

a = raw_input("Choisir un nombre de 1 à 3 (zéro pour quitter) >>> ")

a = int(a) # transtypage (chaîne vers entier)

while a != 0 : # l'opérateur != signifie "différent 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 préférez 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 (chaîne vers entier)

Page 16: Programmation Débutant Python

1

Python module Turtle

Valérie Bellynck (2009),

d’après un diaporama d’Alain Bozzi (2008),

lui-même venant de celui de Bob Cordeau (2008)

2

Le module Turtle

Le module Turtle contient des fonctions pour déplacer un curseur

dans une fenêtre graphique en laissant une trace sous les endroits

par lesquels il est passé.

Pour utiliser le module turtle,

on écrit au début du programme :

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

3

Les principales fonctions

du module Turtle # On efface tout et on recommence

reset()

# Aller à l'endroit de coordonnées x, y

goto(x, y)

# Avancer d'une distance donnée

forward(distance)

# Reculer

backward(distance)

# Relever le crayon (pour pouvoir avancer sans dessiner)

up()

# Abaisser le crayon(pour recommencer à dessiner)

down() 4

Les principales fonctions

du module Turtle

# choix d’une couleur : chaîne prédéfinie # ('red', 'blue', 'green', etc.)

color(couleur)

# Tourner à gauche d'un angle donné (exprimé

en degrés)

left(angle) # Tourner à droite

right(angle)

# Choisir l'épaisseur du tracé

width(épaisseur)

# Remplir un contour fermé à l'aide de la couleur sélectionnée

fill(1)

# écriture d’une chaine de caractères

# (délimitée avec des " ou des ')

write(texte)

# dessine un cercle de rayon donné

circle(radius)

# efface le dessin

reset() # ou

clear()

# se déplace à la coord. x spécifiée

setx(integer) # se déplace à la coord. y spécifiée

sety(integer)

Page 17: Programmation Débutant Python

1

Python Algorithmes sur les tableaux ou listes

(suite de valeurs successives)

Valérie Bellynck (2009),

d’après un diaporama d’Alain Bozzi (2008),

lui-même venant de celui de Bob Cordeau (2008)

Définition d’une liste

Liste

dans le langage python on parle plutôt de listes que de tableaux.

suite de valeurs dont le type peut être identique ou différent.

chaque valeur et est repérée par un indice.

Exemples :

maListe = [5,3,8,4,9] # 5 éléments

fruits = [‘pomme’, ‘orange’, ‘figue’, ‘raisin’]

listeDiverses = [“toto”, 5, “fleurs”, 32.50]

2

5 3 8 4 9 0 1 2 3 4 indice

maListe

3

Accès aux éléments d’une liste

•  Accès

•  l’accès en lecture se fait de la manière suivante :

variable = nomListe[i]

•  l’accès en écriture se fait de la manière suivante :

nomListe[i] = valeur

•  Exemple 1 :

maListe[5,8,12,4]

valeur = maListe[0]

print valeur # affiche 5

4

Accès aux éléments d’une liste

•  Exemple 2 :

maListe[5,8,12,4]

maListe[1] = 3 # modification de la liste 8 -> 3

print maListe[1] # affiche 3

Page 18: Programmation Débutant Python

5

Parcours d’une liste avec for!

maListe = [5,3,8,4,9]

for i in maListe :

print i

couleurs = [“cyan”, “magenta”, “jaune”, “noir”]

for i in couleurs :

print i

fruits = [‘pomme’, ‘orange’, ‘figue’, ‘raisin’]

for i in fruits :

print i 6

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]

• append() pour ajouter un élément à la fin d’une liste

maListe = [3,4,5,8,9]

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

7

Actions sur les listes

•  remove() pour supprimer un élément à une liste

maListe = [3,4,5,8,9,12]

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

•  reverse() pour inverser l’ordre d’une liste

maListe = [3,4,8,9,12]

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

8

Remplissage d’une liste

avec un for

#!/usr/bin/python

# -*- coding: UTF-8 -*-

"*****************************"

listeEntier = [] # liste vide

for i in range(5) :

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) # longueur de la liste

for i in range(lg) :

print listeEntier[i]

Page 19: Programmation Débutant Python

9

Recherche séquentielle

dans une liste

•  La recherche dans une liste fait apparaître deux étapes :

–  un parcours

–  une action conditionnelle

•  le parcours

while (indice < lg_maListe)

•  l’action conditionnelle

maListe[i] == elem

5 3 8 4 9 0 1 2 3 4 indice

maListe

10

Recherche séquentielle

dans une liste non triée

liste = [5,8,3,7]

lg = len(liste) # 4

i = 0 # indice de la liste initilisé à 0

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

i = i + 1 # incrémentation

trouve = i < lg

•  En sortie de boucle, nous avons :

soit i = lg et elem n’est pas dans la liste

soit i < lg et elem est dans la liste

11

Recherche séquentielle

dans une liste non triée

•  Utilisation d’une sentinelle : on place la valeur recherchée (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

while (liste[i] != elem) :

i = i + 1 # incrémentation

trouve = i < lg

•  En sortie de boucle, nous avons :

soit liste[i] = elem avec i = lg => elem n’est pas dans la liste

soit liste[i] = elem avec i < lg => elem est dans la liste 12

Recherche séquentielle

dans une liste triée

•  Dans une liste triée, il y a une relation d’ordre : 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 # incrémentation

trouve = i < lg and liste[i] == elem

•  En sortie de boucle, nous avons :

soit i = lg => elem n’est pas dans la liste

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

Page 20: Programmation Débutant Python

1

Python Notions de modularité

Valérie Bellynck (2009-2010), d’après un diaporama d’Alain Bozzi (2008),

lui-même venant de celui de Bob Cordeau (2008)

2

Les sous-programmes

sous-programme =

suite nommée d’instructions, que l’on peut appeler chaque fois que nécessaire

2 types de sous-programmes :

•  la fonction : suite d’instructions effectuant un calcul. Le résultat du calcul est retourné ou renvoyé par l’instruction : return nom_Variable ou expression •  la procédure : suite d’instructions pour effectuer une tâche. Il n’y a pas l’instruction return donc pas de résultat retourné.

On parlera toujours de fonction. Si elle ne retourne pas de valeur (pas d’instruction return) ce sera une procédure.

Un sous-programme dépend de valeurs entrées en paramètre

Définition d’un sous-programme en Python

Attention à l’indentation en Python : c’est elle qui délimite le bloc d’instructions

def nomFonction(param1, param2, ...) : suite d’instructions

3

Les procédures - un exemple

Exemple :

Séquence minimale d’instructions

pour tracer un carré avec le module Turtle :

On peut regrouper ces instructions

dans une fonction que l’on nommera dessineCarre()

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

4

Les procédures

Définition d’un sous-programme en Python

def nomFonction(param1, param2, ...) : suite d’instructions

Soit, dans l’exemple du carré :

Ce sous-programme

–  ne contient pas l’instruction return, il ne retourne

pas de valeur, c’est donc une procédure.

–  ne contient pas de paramètres.

def dessineCarre() :

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

Page 21: Programmation Débutant Python

5

Les procédures paramètrées

Introduction d’un paramètre : –  on veut pouvoir changer la longueur du côté et utiliser la même

procédure

Soit, dans l’exemple du carré :

Ce sous-programme

–  est une procédure (ne contient pas d’instruction return)

–  contient un paramètre.

def dessineCarre(cote) : for i in range(4):

forward(cote) left(90)

6

L’appel d’une procédure

Utilisation d’un sous-programme dans un script Python

#!/usr/bin/python # -*- coding: UTF-8 -*-

from Turtle import * # définition de la fonction def dessineCarre(cote): for i in range(4): # pour les 4 cotés forward(cote) # pour la longueur de chaque coté rigth(90) # pour tourner

# appel de la fonction dessineCarre(100)

7

Les fonctions

Exemple 2 :

def carre(val):

return val * val

Exemple 3 :

def estPair(val):

return val % 2 ==0

Exemple 4 :

def messagerie(email,texte):

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

Ces sous-programmes contiennent l’instruction return, ils retournent

respectivement un entier pour l’exemple 2, un booléen pour l’exemple 3,

une chaîne de caractère pour l’exemple 4, ce sont donc des fonctions.

un entier

un booléen une chaîne

8

L’appel d’une fonction

Utilisation d’un sous-programme dans un script Python

#!/usr/bin/python # -*- coding: UTF-8 -*- from Turtle import * longueur = int(raw_input("Entrez la longueur d'coté : ")) # définition de la fonction def dessineCarre(cote): for i in range(4): # pour les 4 cotés forward(cote) # pour la longueur de chaque coté rigth(90) # pour tourner def carre(val):

return val * val # rend la valeur au carré def estPair(val):

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

Page 22: Programmation Débutant Python

9

Les modules

•  Contenu d’un module

•  Regroupement de variable et de fonctions.

•  Le but d’un module est de proposer des opérations sur des domaines différents.

•  Création et utilisation d’un module

•  définir des fonctions dans un fichier et le nommer mNomFichier.py

•  créer un autre fichier et utiliser les différentes fonctions en prenant soin de mettre au début du fichier la ligne suivante :

import mNomFichier

ou

from mNomFichier import * 10

Les modules

import nomFichier et from nomFichier import * –  import nomFichier nécessite de préfixer les fonctions, sinon il se produit

une erreur “NameError”.

–  Si dans le module mDessin on trouve la fonction carre(largCote), il faut l’utiliser de la manière suivante :

import mDessin mDessin.carre(100)

–  Dans le cas de from mDessin import *, le préfixage n’est plus nécessaire, on utilise le module de la manière suivante :

from mDessin import * carre(100)

Page 23: Programmation Débutant Python

1

PythonLes fichiers et le module OS

Valérie Bellynck (2009),d’après un diaporama d’Alain Bozzi (2008),

lui-même venant de celui de Christophe Morvan (2006)

2

Communication avec le système

• Les contenus de fichier– Pourquoi faire ? Par exemple

• assurer la persistance des données. Contrairement à la RAM , les données stockées dans un fichier sont pérennes,

• recopier le contenu d’un fichier en le corrigeant (encodage…)

– Les fonctions de base du noyau de Python permettent• de lire, et écrire dans un fichier

• de créer un nouveau fichier

• de modifier le contenu d’un fichier

• de concevoir des programmes réutilisables pour remédier à deproblèmes du à des contenus de fichiers

• …

3

Communication avec le système

• Les répertoires– Pourquoi faire ?

• automatiser des tâches sur des listes de fichiers

C’est la motivation initiale des langages de scripts

et la raison de ce nom “script”

– Ces fonctions sont contenues dans le module OS

– Elles permettent• de créer ou supprimer un fichier ou un dossier• de changer le nom d’un élément• de parcourrir la liste des éléments d’un répertoire• de chercher un élément d’un répertoire

ou tous les éléments plus vieux qu’une date• de corriger automatiquement les contenus d’une liste de fichiers• …

4

Les fichiers

Utilisation des fichiers– Pour manipuler les fichiers, il faut :

1. créer une variable logique de type fichier (descripteur de fichier) etouvrir le fichier soit en mode lecture ou écriture.

2. effectuer le traitement (copie d’une liste dans le fichier, copie d’un fichier dans une liste, ...)

3. fermer le fichier en fin de traitement

Page 24: Programmation Débutant Python

5

Les fichiers

1/ créer une variable logique de type fichier

(descripteur de fichier) et ouvrir le fichier

soit en mode lecture ou écriture.

f = open(“futilisateur.txt”,’r’)

f : variable de type fichier, (typage automatique fait par python)

open () : fonction qui permet :

• l’ouverture d’un fichier passé en paramètre : ici futilisateur.txt

• de spécifier par un mode les opérations qui seront permises ici :

r pour read, on ne pourra donc que lire le fichier.

6

Les fichiers

2/ effectuer le traitement,

comme ici : la copie du fichier dans une liste

maListe = [] # déclaration d’une liste vide

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

for i in lesLignes :

maListe.append(i)

7

Les fichiers

Remarques importantes :

• Vous avez du observer que le fichier futilisateurs.txt n’était pas

utilisé dans le traitement. On l’ouvre et puis c’est tout.

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

Pour illustrer cela, pensez à la laisse d’un chien.

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

8

Les fichiers

Ecriture d’une liste dans un fichier

noms = [“nadège”, “ludo”, “marie”, “alain”]

# ouverture

f = open(“futilisateurs.txt”, “w”)

# traitement

for i in noms : f.write(i)

# fermeture du fichier du fichierf.close()

Page 25: Programmation Débutant Python

9

Quelques modes sur les fichiers

r # ouvert en lecture

w # ouvert en écriture-écrasement

a # ouvert en écriture-ajout

r+ # ouvert en lecture/écriture

w+ # ouvert en lecture/écriture-écrasement

a+ # ouvert en lecture/écriture-ajout

10

Quelques fonctions sur les fichiers

# lecture de l’ensemble du fichier pointé par f sous forme d’unechaîne de caractères

f.read()

# retourne une chaîne d’au plus taille caractères lus dans lefichier à partir de la position courante.

f.read(taille)

# lecture du fichier pointé par f ligne par ligne sous la formed’une chaîne de caractères

f.readline()

# lecture de l’ensemble du fichier pointé par f sous la forme d’une liste de chaîne de caractères

f.readlines()

11

Les fonctions du module os

Attention => from os import * pour les utiliser

•getcwd() # retourne le répertoire courant•chdir(rep) # se place dans le répertoire rep•rename(src,dest) # renomme src en dest•remove(chemin) et rmdir(rep) # supprime le répertoire rep•mkdir(rep) # crée le répertoire rep•listdir(rep) # liste les fichiers ou les répertoires dans rep•system(cde) # exécute la commande cde

12

Exemple

Que fait le script suivant ?

rename(’prog.py’,’tp3.py’)

mkdir(’u:nmonRepnpythonntp5’)

system(’cat /proc/pci |grep ati > log’)

Page 26: Programmation Débutant Python

13

Les fonctions du module os.path

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

# /plus/de/un/rep/unFichier

• exists(chemin) # vrai si chemin existe

• isfile(chemin) # vrai si chemin est un fichier

• isdir(chemin) # vrai si chemin est un répertoire

• walk(chemin,fonc,arg)La fonction os.walk(path) crée un générateur de triplets (root, dirs, files) dans

l'arborescence de path. Un triplet est généré par répertoire visité. root

représente le chemin d'accès du répertoire visité. dirs est la liste des sous-

répertoires du répertoire root et files est la liste des fichiers du répertoire root.

Voir http://docs.python.org/library/os.html#os.walk

14

Exemple

Lister l’arborescence d’un répertoire avec listdir()

#! /usr/bin/python

# -*- coding: UTF-8 -*-

from os import *

rep = getcwd() # retourne le répertoire courant

print "Le répertoire courant est : ", rep

chdir(rep) # se place dans le répertoire rep

listRep = []

# liste les fichiers ou les répertoires dans rep

listeRep = listdir(rep)

for i in listeRep:

print i

15

Exemple

Lister l’arborescence d’un répertoire avec os.walk()

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

16

Gadget

Utiliser le module time pour tester la rapidité de 2 fonctionsimport time

def compare(arg):

a = time.clock()# première fonction à tester, avec arg comme paramètre

fonction1(arg)

b = time.clock()# deuxième fonction à tester, avec arg comme paramètre

fonction2(arg)

c = time.clock()

return b-a, c-b

print compare('c:/python24') # pour appel avec arg='c:/python24'Résultat, par exemple :(1.0782314512039937, 1.0392410208560028)

## : les 2 fonctions se valent...

Page 27: Programmation Débutant Python

Mém

o de

fonc

tions

Pyt

hon

M

anue

l de

réfé

renc

e de

s fon

ctio

ns d

e ba

se :

http

://do

cs.p

ytho

n.or

g/lib

rary

/func

tions

.htm

l

Entr

ées/

sort

ies

raw_input(in

vite

)

Aff

iche

le te

xte

cont

enu

dans

inv

ite

et ré

cupè

re la

cha

îne

tapé

e au

cla

vier

n=

int(ch

)

Met

la c

onve

rsio

n de

la c

haîn

e co

nten

ue d

ans c

h da

ns u

n en

tier,

puis

cet

en

tier d

ans l

a va

riabl

e n

Cha

înes

len(ch

)

Ren

d un

ent

ier d

ont l

a va

leur

est

le n

ombr

e de

car

actè

res d

e la

cha

îne ch

Tu

rtle

forward(10

0)

Ava

nce

de 1

00

left(90

)

Tour

ne à

gau

che

de 9

color(‘red’)

Pass

e en

rouge

la c

oule

ur d

e la

trac

e width(1)

D

éfin

i l’é

pais

seur

du

trait

à 1

pt

up()

Lève

le c

rayo

n (d

épla

cem

ents

ulté

rieur

s san

s lai

sser

de

trace

) down()

Bai

sse

le c

rayo

n (d

épla

cem

ents

ulté

rieur

s ave

c tra

ce)

goto(-50

,0)

D

épla

ce le

cur

seur

à la

pos

ition

(-50

,0) (

l’orig

ine

du p

lan

est a

u ce

ntre

) Li

stes

li

.append(‘red’)

Allo

nge

la li

ste

avec

la c

haîn

e ‘red’

li

.insert(i,

‘red’)

Insè

re (=

ajou

te) à

cha

îne ‘red’

à la

pos

ition

i d

e la

list

e li

li

.sort()

Trie

les é

lém

ents

de

la li

ste li

li

.remove(‘red’)

Supp

rime

la v

aleu

r ‘red’

des

élé

men

ts d

e la

list

e li

li

.reverse()

Ret

ourn

e l’o

rdre

des

élé

men

ts d

e la

list

e li

len(li

)

Ren

d un

ent

ier d

ont l

a va

leur

est

le n

ombr

e d’

élém

ents

de

la li

ste li

range(4)

Con

stru

it un

e lis

te a

vec

les v

aleu

rs :

0, 1

, 2, 3

(en

s’ar

rêta

nt <

4)

Fich

iers

f=

open(nomfic,m)

Con

stru

it un

des

crip

teur

f su

r le

fichi

er nomfic

dan

s le

mod

e m

f.

close()

Ferm

e le

fich

ier p

oint

é pa

r le

desc

ripte

ur f

f.

read(ta

ille

)

Lit tai

lle

cara

ctèr

es d

u fic

hier

déc

rit p

ar f

, et m

et la

cha

îne

ains

i obt

enue

da

ns u

ne c

haîn

e f.

readlines()

Lit t

oute

s les

lign

es d

u fic

hier

déc

rit p

ar f

, et l

es m

ets d

ans u

ne li

ste

de

chaî

nes

f.readline()

Lit l

a lig

ne c

oura

nte

du fi

chie

r poi

ntée

par

le d

escr

ipte

ur f

, et l

a m

et d

ans u

ne

chaî

ne

f.write(ch

)

Ecrit

la c

haîn

e ch

(ou

le c

onve

rtit e

n ch

aîne

si c

’est

un

nom

bre)

dan

s le

fichi

er d

écrit

par

f