Programmer en Python Jean-Philippe Poli Jean-philippe.poli@ecp.fr.

Post on 04-Apr-2015

129 views 8 download

Transcript of Programmer en Python Jean-Philippe Poli Jean-philippe.poli@ecp.fr.

Programmer en Python

Jean-Philippe PoliJean-philippe.poli@ecp.fr

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 2

Accès aux fichiers (généralités)

Comment désigner un fichier ?

nomfichier . txtPar son nom:

nom extension

Extension Type de fichier

Images jpg, gif, png …

Documents doc, txt, xls

Données binaires bin, dat

Programmes exe

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 3

Accès aux fichiers (généralités)

Comment désigner un fichier ?

nomfichier . txtPar son nom:

nom extension

Par son chemin:

Absolu C:\répertoire1\sousrépertoire\

Relatif sousrépertoire\

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 4

Accès aux fichiers (généralités)

fichiers

Mignonne, allons voir si la roseQui ce matin avoit descloseSa robe de pourpre au Soleil,A point perdu ceste vespréeLes plis de sa robe pourprée,Et son teint au vostre pareil.

Las ! voyez comme en peu d'espace,Mignonne, elle a dessus la placeLas ! las ses beautez laissé cheoir !Ô vrayment marastre Nature,Puis qu'une telle fleur ne dureQue du matin jusques au soir !

Donc, si vous me croyez, mignonne,Tandis que vostre âge fleuronneEn sa plus verte nouveauté,Cueillez, cueillez vostre jeunesse :Comme à ceste fleur la vieillesseFera ternir vostre beauté.

00100110101010101011101010101010101010100101010101010101010101010101010101101010100010011011011110100001111010000000111111111010101010100100000111111010101010101010101010101011100100110101010101011101010101010101010101010110101010001001101010101010111001001101010101010111010101010101010101010101101010100010011010101010101110010011010101010101110101010101010101010010101010101010101010101010101010110101010001001101010101010111010101010101010101001010101010101010101010101010101011010101000100110101010101011101010101010101010100101010101010101010101010101010101101010100101010101010101010010101010101010101010101010101010110101010

Fichier texte Fichier binaire

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 5

Accès aux fichiers (généralités)

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 6

Accès aux fichiers (généralités)

Fichier exécutable (exe)

Fichier word (doc)

Fichier excel (xls)

binaire

binaire

binaire

Fichier texte brut (txt)

Fichier python (py)

texte

compliqué

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 7

Accès aux fichiers (généralités)

• Un fichier python (py) est un fichier texte Si on l’ouvre avec l’éditeur de texte brut, on peut lire le contenu

• Pourtant si je double-clique dessus, le « programme » est exécuté ??

Table d’association des applications / type de fichiers.doc word.xls excel.py python (et pas idle!)

double cliquer sur un fichier word indique à Windows de démarrer Word en mode « ouverture du fichier en paramètre »Double cliquer sur un fichier python indique à python d’interpréter le fichier

• Un fichier python est donc un texte que le programme python interprète à la volée: on parle de script et non pas de programme

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 8

Accès aux fichiers (en python)

Ouverture du fichier:

monfichier = open(nom_du_fichier,mode)

nom_du_fichier (str): l’adresse (absolue ou relative) et le nom du fichier

mode (str): un mode d’ouverture parmi w, r, a

monfichier (file): un objet représentant le fichier ouvert

Exception levée: IOError

Fermeture du fichier:

monfichier.Close()

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 9

Accès aux fichiers (en python)

Attention, si vous employez des adresses relatives, vous devez spécifier un répertoire courant, à partir duquel le cheminement vers le fichier va se faire.

from os import chdirchdir(r’c:\tp\AlgoProg’)

Notez l’emploi du r devant l’adresse du fichier!

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 10

Accès aux fichiers (en python)

Entre l’ouverture en lecture et la fermeture, on peut lire des données:

monfichier.read() (str) retourne tout le fichier

monfichier.read(octets) (str) retourne au plus le nombre d’octets spécifiés suivants

monfichier.readline() (str) lit la ligne suivante du fichier

monfichier.readlines() (list of str) met toutes les lignes dans une liste

Ce sont toutes des fonctions donc des expressions!

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 11

Accès aux fichiers (en python)

Entre l’ouverture en écriture et la fermeture, on peut écrire des données:

monfichier.write(string) Écrit la chaîne string dans le fichier

monfichier.writelines(li) Ecrit toutes les chaînes de li (list of string) dans le fichier.

Attention, le retour à la ligne n’est pas ajouté automatiquement!

Ce sont des procédures, donc pas de retour, donc des instructions.

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 12

Programmation orientée objet

• On distingue les types de bases (int, float) des objets (str, list, dict…)

• Un objet est une entité qui regroupe:– des variables pour caractériser son état– des méthodes: instance.methode(…)

• Les objets sont des instances d’une classe

• Les listes et les dictionnaires sont des objets spéciaux

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 13

Méthodes des objets string (str)

Formatage de la chaîne de caractères S:

S.capitalize() (str) Retourne une copie de S où seule la première lettre est en majuscule

S.lower() (str) Retourne une copie de S où toutes les lettres sont en minuscules

S.upper() (str) Retourne une copie de S où toutes les lettres sont en majuscules

S.swapcase() (str) Retourne une copie de S où la casse est inversée

S.title() (str) Retourne une copie de S où tous les mots commencent par une majuscule

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 14

Méthodes des objets string (str)

Tests de la chaîne de caractères S:

S.isalnum() (bool) Retourne True si la chaîne S ne contient que des caractères alphanumériques et au moins 1 caractère. False sinon.

Cousines: isalpha, isdigit, islower, isupper, isspace

S.endswith(suffix,deb,fin) (bool) Retourne True si S termine par la chaîne suffix, False sinon.

suffix peut être un tuple avec plusieurs suffixes alternatifs.

deb et fin sont optionnels et fonctionnent comme le slicing.

Cousine: startswith

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 15

Méthodes des objets string (str)

Passage de la chaîne de caractères S en liste (et vice versa):

S.join(sequence) (str) Retourne une chaîne de caractère constituée de la concaténation des chaînes de caractères de la séquence séparées par S.

S.split(sep) (list of str) Retourne une liste de chaînes de caractères formée des mots de S séparés par la chaîne sep.

sep est optionnel: par défaut, c’est l’espace.

S.splitlines(endchar) (list of str) Retourne une liste de chaînes de caractères constituée des lignes de S.

endchar (bool) est optionnel et indique si le caractère <fin de ligne> doit être conservé ou pas.

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 16

Méthodes des objets string (str)

Recherche d’éléments dans S:

S.count(sub,deb,fin) (int) Retourne le nombre de fois que la sous-chaîne sub apparaît dans S.

deb,fin sont optionnels et fonctionnent comme le slicing.

S.find(sub,deb,fin) (int) Retourne l’indice de la première occurrence de sub dans S, -1 en cas d’erreur.

deb,fin sont optionnels et fonctionnent comme le slicing

Jumelle: index, lance ValueError au lieu de -1.

Cousine: rfind, rindex (r=reverse)

S.replace(old,new) Remplace les occurrences de la chaîne old par new.

Le module string comporte à peu près les mêmes fonctions.

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 17

Méthodes des listes (list)

Soit une liste L:

L.append(elt) Ajoute l’élément en fin de liste

L.extend(seq) Ajoute tous les éléments de seq ç la fin de L

L.insert(index,objet) Ajoute l’élément à la position index.

L.pop(index) (?) Retourne et supprime l’élément à la position index.

index est optionnel, par défaut 0.

L.remove(elt) Supprime l’élément de la liste L.

L.sort() Trie la liste L.

L.count(elt) (int) Indique le nombre d’occurrences de elt.

L.index(elt,deb,fin) (int) Retourne l’indice de la première occurrence de elt.

Deb et fin sont optionnels et se comportent comme le slicing.

L.reverse() Inverse la liste.

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 18

Méthodes sur les dictionnaires (dict)

Soit D un dictionnaire:

D.clear() Vide le dictionnaire.

D.copy() (dict) Retourne une copie du dictionnaire.

D.get(clé, default) (?) Retourne la valeur associée à clé si elle existe, sinon retourne la valeur default.

default est optionnelle, par défaut vaut None.

D.has_key(clé) (bool) Retourne True si la clé est présente, False sinon.

D.items() (list of tuple) Retourne une liste de 2-tuples clé/valeur.

D.keys() (list) Retourne la liste des clés.

D.values() (list) Retourne la liste des valeurs.

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 19

Références d’objet

• En Python, TOUT est objetex.: 1 est une instance de la classe int, une fonction ou un module

• Une variable représente un lien vers cet objet (on parle de référence)

• La référence d’un objet est son adresse en mémoirec’est ce que nous donne la fonction id()

• Chaque nombre, chaque chaîne de caractère est une instance unique

i.e.: il n’y a pas de instances de la classe int qui vaut 1

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 20

Références d’objet

• Véritable sens de l’affectation

>>> A=1 La variable A prend la valeur de la référence de l’objet 1

>>> B=A La variable B prend la valeur de la référence contenue dans la variable A, c’est-à-dire celle de l’objet 1

1objet

A

B

>>> A=A+1 La variable A prend la valeur de la référence de l’objet 2 (résultat de l’opération)

2objet

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 21

Références d’objet

• Mais alors que signifie tester l’égalité de deux objets ? Par exemple, de deux entiers ?

• Il existe deux opérateurs d’égalité d’objets

== compare valeurs par valeurs deux objetsis compare les références

Illustration sur la console interactive

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 22

Slicing (découpage)

Le slicing est une opération qui s’applique à n’importe quelle séquence. Elle permet de récupérer une partie ou la totalité d’une séquence.

La nouvelle séquence est TOUJOURS un nouvel objet (même si la sous-séquence = séquence source).

seq[indice1:indice2:pas]

ATTENTION: indice2 n’est pas compris dans le résultat!

Si indice1=indice2, cela retourne la séquence vide

Programmer en Python – Jean-Philippe Poli (jean-philippe.poli@ecp.fr) 23

Slicing (découpage)

Soit L = range(1,11)

L est la liste (une séquence) [1,2,3,4,5,6,7,8,9,10]

L[2:2] []

L[4:6] [5,6]

L[:] [1,2,3,4,5,6,7,8,9,10] (copie d’une liste)

L[1:100] [2,3,4,5,6,7,8,9,10]

L[0:10:2] [1, 3, 5, 7, 9]

L[-1] [10]

L[:-2] [1,2,3,4,5,6,7,8]

L[2:] [3,4,5,6,7,8,9,10]

L[-5:-2] [6,7,8]

L[-2:-5] []