178
C. Aperghis-Tramoni Département d’Informatique 1 La totalité du système Python est librement téléchargeable sur www.python.org Pour les systèmes Windows Active State propose une distribution adaptée : http://www.activestate.com/Products/ActivePython/ Le logiciel Python.

Python

Embed Size (px)

DESCRIPTION

Programmation

Citation preview

  • C. Aperghis-Tramoni Dpartement dInformatique1

    La totalit du systme Python est librement tlchargeable sur www.python.org

    Pour les systmes Windows Active State propose une distribution adapte :

    http://www.activestate.com/Products/ActivePython/

    Le logiciel Python.

  • C. Aperghis-Tramoni Dpartement dInformatique2

    Python a t cr en 1991 aux Pays-Bas par Guido van Rossum.

    Origine de Python.

  • C. Aperghis-Tramoni Dpartement dInformatique3

    Il permet l'excution de commandes simples pour s'habituer au langage.

    Le systme indique qu'il est en mode immdiat en affichant : >>>L'utilisateur introduit une commande.L'interprteur value la ligne.Le rsultat apparat sur l'cran

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 19864 * 761071511789448>>> ^Dcoruscant:~/Langages/Python chris%

    On sort du mode immdiat au moyen du caractre ctrl D.

    Le mode immdiat..

  • C. Aperghis-Tramoni Dpartement dInformatique4

    La seconde manire d'utiliser l'interprteur consiste crer un fichier et a le lui soumettre.

    coruscant:~/Langages/Python chris$ cat bonjour.pyprint "Bonjour tout le monde.\n"coruscant:~/Langages/Python chris$coruscant:~/Langages/Python chris$ python bonjour.pyBonjour tout le monde.

    coruscant:~/Langages/Python chris$

    Le mode programme.

  • C. Aperghis-Tramoni Dpartement dInformatique5

    Python interprt Utilisation en mode calculette .

    Exemple :

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 2 + 35>>> a = 100>>> a100>>> print "Bonjour la compagnie."Bonjour la compagnie.>>> print "Hello. File "", line 1 print "Hello. ^SyntaxError: EOL while scanning single-quoted string>>> ^Dcoruscant:~/Langages/Python chris$

    Le mode calculette.

  • C. Aperghis-Tramoni Dpartement dInformatique6

    Une mthode systme permet de quitter l'interprteur, c'est la mthode exit() du module sys.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> import sys>>> sys.exit()coruscant:~/Langages/Python chris$

    Sortie de l'interprteur.

  • C. Aperghis-Tramoni Dpartement dInformatique7

    Le projet Parrot.

    Projet Parrothttp://www.parrotcode.org)

    Resistance is Futile ...

    .. Your language will be asimilated.

  • C. Aperghis-Tramoni Dpartement dInformatique8

    Python compil.

    http://pirate.tangentcode.com/

    Etape 1 : Tlcharger la dernire version de la machine virtuelle Parrot.http://www.parrotcode.org/source.html

    Etape 2 : Tlcharger la version la plus rcente de Python.http://python.org/

    Etape 3 : Installer Parrot en prcisant bien le path (--prefix = `pwd`).perl Configure.pl --prefix=`pwd`make

    Etape 4 : On compile Python en tant que librairie partage. ./configure --enable-sharemake

    Etape 5 : Lancer les tests.% python PirateTest.py

    Normalement ca devrait marcher...

  • C. Aperghis-Tramoni Dpartement dInformatique9

    Les bibliothques.

    http://python.developpez.com/outils/Librairies/

  • C. Aperghis-Tramoni Dpartement dInformatique10

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 00>>> 20072007>>> -260-260>>> ^Dcoruscant:~/Langages/Python chris$

    Entiers courts.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 4509198376106634032057891044286154067326745091983761066340320578910442861540673267L>>> ^Dcoruscant:~/Langages/Python chris$

    Entiers longs.

    Les valeurs numriques.

  • C. Aperghis-Tramoni Dpartement dInformatique11

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 046342460>>> ^Dcoruscant:~/Langages/Python chris$

    Nombre en base 8.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 0X1EABCF2010063>>> ^Dcoruscant:~/Langages/Python chris$ chris%

    Nombre en base 16.

    Les valeurs numriques.

  • C. Aperghis-Tramoni Dpartement dInformatique12

    Le calcul du rsultat dune expression dpend de la nature des oprateurs.

    Sinon, la rgle du type le plus fort sapplique.

    Deux entiers produisent un rsultat entier.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 5/31>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 1.0/50.20000000000000001>>> 1/float(3)0.33333333333333331>>> float(1/7)0.0>>> ^Dcoruscant:~/Langages/Python chris%

    Expressions.

  • C. Aperghis-Tramoni Dpartement dInformatique13

    Exemples.

    coruscant:~/Langages/Python chris$ ./test.pyC:\Temp>python prog.pyUn entier 3 sur un flottant 1.24 : 2.41935483871Un hexadecimal 255 + un complexe (25+4j) : (280+4j)Un entier long 999999999 - (un entier 3 * un hexa 255.) : 999999234Un nombre 1.24 eleve a la puissance 3 : 1.906624Un entier 4 divise par un entier 3 : 1Un modulo 4 d'un reel 1.24 : 0.28coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique14

    Valeurs spcifiques prdfinies .

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Le langage Python."'Le langage Python.'>>> ^Dcoruscant:~/Langages/Python chris$

    Chanes de caractres .

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> b=None>>> b>>>>>> not bTrue>>> b=True>>> not bFalse>>> ^Dcoruscant:~/Langages/Python chris$

    Les chanes.

  • C. Aperghis-Tramoni Dpartement dInformatique15

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour tout le monde."'Bonjour tout le monde.'>>> 'Bonjour tout le monde.''Bonjour tout le monde.'>>> "J'ai voulu vous dire bonjour.""J'ai voulu vous dire bonjour.">>> "J'ai voulu vous dire \"Bonjour\"."'J\'ai voulu vous dire "Bonjour".>>> ^Dcoruscant:~/Langages/Python chris$

    Les chanes de caractres.

  • C. Aperghis-Tramoni Dpartement dInformatique16

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> """Definition de longues chaines... Une longue chaine... est une suite de caracteres... qui tient sur plusieurs lignes consecutives."""'Definition de longues chaines\nUne longue chaine\nest une suite de caracteres\nquitient sur plusieurs lignes consecutives.>>> print """Une longue chaine... est une suite de caractres... qui tient sur plusieurs lignes consecutives."""Une longue chaineest une suite de caractresqui tient sur plusieurs lignes consecutives.>>> ^Dcoruscant:~/Langages/Python chris$

    Plus original, lutilisation de triples quotes doubles () ou triples quotes simples ().Dans ce cas, les fin de lignes sont exactement celles qui apparaissent dans la chane..

    Les longues chanes.

  • C. Aperghis-Tramoni Dpartement dInformatique17

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour" + " tout le" + " monde"'Bonjour tout le monde'>>> "Trois fois " + "Bonjour " * 3'Trois fois Bonjour Bonjour Bonjour '>>> "Bonjour"[0]'B'>>> "Bonjour"[1]'o'>>> "Bonjour"[-1]'r>>> ^Dcoruscant:~/Langages/Python chris$

    Multiplication de chane.

    Il existe une opration pour multiplier les chanes de caractres.C'est l'oprateur "*" qui permet de la raliser.

  • C. Aperghis-Tramoni Dpartement dInformatique18

    Mthodes des chanes.

    split() Dcoupeune chane en uneliste de mots.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour tout le monde.".split(" ")['Bonjour', 'tout', 'le', 'monde.']>>> ^Dcoruscant:~/Langages/Python chris$

    join() Concatneune liste dechanes en unechane unique.

    find() Donne laposition d'unesous-chane dansune chane.

    count() Compte lenombre de sous-chanes dans lachane :

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "-".join(['Bonjour', 'tout', 'le', 'monde.'])'Bonjour-tout-le-monde.'>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour tout le monde.".find('ou')4>>> "Bonjour tout le monde.".count('ou')2>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique19

    Mthodes des chanes.

    lower() : convertitune chane enminuscules.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "CHAINE EN MAJUSCULES".lower()'chaine en majuscules'>>> ^Dcoruscant:~/Langages/Python chris$

    upper() : convertitune chane enmajuscules.

    capitalize()Convertit lapremire lettre enmajuscule.

    title() Convertit lapremire lettre detous les mots enmajuscule.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "chaine en minuscules".upper()'CHAINE EN MINUSCULES'>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "chaine en minuscules".capitalize()'Chaine en minuscules'>>> "chaine en minuscules".title()'Chaine En Minuscules'>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique20

    Mthodes des chanes.

    swapcase()Intervertit lesmajuscules et lesminuscules

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "MAJUSCULES - minuscules".swapcase()'majuscules - MINUSCULES'>>> ^Dcoruscant:~/Langages/Python chris$

    strip() Supprimeles blancs inutilesen dbut et en dechane

    replace() Remplaceune sous-chanepar une autre.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> " Bonjour tout le monde. ".strip()'Bonjour tout le monde.'>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 'Bonjour tout le monde.'.replace('tout le monde','la compagnie')'Bonjour la compagnie.'>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique21

    Mthodes des chanes.

    isalnum() Renvoiela valeur vrai si lachane estconstitue delettres ou dechiffres et silen(s)>0.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "ABC123abc".isalnum()True>>> "ABC-123-abc".isalnum()False>>> ^Dcoruscant:~/Langages/Python chris$

    isalpha() Renvoiela valeur vrai si lachane estconstitue delettres et silen(s)>0.

    isdigit() ) Renvoiela valeur vrai si lachane estconstitue dechiffres et silen(s)>0

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "ABCabc".isalpha()True>>> "ABC123".isalpha()False>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "0123".isdigit()True>>> "0123A".isdigit()False>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique22

    Mthodes des chanes.

    islower() Renvoiela valeur vrai si lachane n'estconstitue que delettres minuscules.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "abcd".islower()True>>> "abcdE".islower()False>>> ^Dcoruscant:~/Langages/Python chris$

    isupper() Renvoiela valeur vrai si lachane n'estconstitue que delettres majuscules.

    isspace() Renvoiela valeur vrai si lachane n'estconstitue qued'espaces.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "ABCDE".isupper()True>>> "ABCDe".isupper()False>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> " ".isspace()True>>> "x ".isspace()False>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique23

    Mthodes des chanes.

    istitle() Renvoie lavaleur vrai si lachane est unesquence de titre,tous les motscommencent parune majuscule.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour A Tous.".istitle()True>>> "Bonjour a Tous.".istitle()False>>> ^Dcoruscant:~/Langages/Python chris$

    center(n) Renvoieune copie de lachane centre surn caractres.

    ljust(n) Renvoieune copie de lachane justifie gauche sur ncaractres.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour".center(15)' Bonjour '>>> ^Dcoruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour".ljust(15)'Bonjour 'coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique24

    Mthodes des chanes.

    rjust(n) Renvoieune copie de lachane justifie droite sur ncaractres.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonjour".rjust(15)' Bonjour'>>> ^Dcoruscant:~/Langages/Python chris$

    replace(x,y,n)Remplace dans lachane les npremiresoccurrences de lasous chane x parla chane y.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "abracadabra".replace('a','*',2)'*br*cadabra'>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique25

    La mthode translate().

    translate(t, deletechars = ' ') Renvoie une copie de la chane dans laquelle tous lescaractres deletechars auront t supprims et ou les caractres restants auront tsubstitue par l'intermdiaire de la table de substitution passe comme premierparamtre.Si la chane de dpart est normale, la table est une chane de 256 caractres.Si la chane de dpart est une chane Unicode, la table est une chane Unicode de 65536caractres.Chaque caractre est remplac par le caractre table[ord(c)]

    La table peut tre cre au moyen de la mthode string.maketrans(source, destination).Cette mthode gnre une chane de 256 caractres dans laquelle chaque caractre de lachane source est remplac par le caractre de la chane destination.

  • C. Aperghis-Tramoni Dpartement dInformatique26

    Exemples.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> table=string.maketrans('ABCDEFGHIJ','0123456789')>>> table'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;?@0123456789KLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'>>> tr=string.maketrans('aeiou','*****')>>> 'Bonjour la compagnie'.translate(tr,' ')'B*nj**rl*c*mp*gn**'>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique27

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "Bonsoir"[1-3]'i'>>> "Bonsoir"[1:3]'on'>>> "Bonsoir"[3:]'soir'>>> "Bonsoir"[:3]'Bon'>>> "Bonsoir"[3:3]'>>> "Bonsoir"[-3:-1]'oi'>>> ^Dcoruscant:~/Langages/Python chris$

    Sous chanes.

  • C. Aperghis-Tramoni Dpartement dInformatique28

    Il n'est pas possible de modifier une chane de caractres.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = "Bonjour tout le monde.">>> a[10] = "x"Traceback (most recent call last): File "", line 1, in ?TypeError: object does not support item assignment>>> ^Dcoruscant:~/Langages/Python chris$

    Modification des chanes.

  • C. Aperghis-Tramoni Dpartement dInformatique29

    Il existe des mcanismes qui procdent aux transformations ncessaires afin conserver lintgritdu type.Par exemple, construire une chane de caractres partir de donnes htrognes (chaines, valeursnumriques).Toute valeur se transforme en chane de caractres en faisant rfrence la fonction repr() ou plussimplement en reprsentant cette valeur entre antiquotes.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = 2007>>> date = "Nous sommes en l'an " + `a`>>> date"Nous sommes en l'an 2007">>> annee = "Cette annee est l'annee " + repr(a)>>> annee"Cette annee est l'annee 2007">>> ^Dcoruscant:~/Langages/Python chris$

    Conversions.

  • C. Aperghis-Tramoni Dpartement dInformatique30

    Unicode.

  • C. Aperghis-Tramoni Dpartement dInformatique31

    Unicode, c'est un codage pour chaque caractre de toutes les critures utilises dans le mondeCe numro est constitu de 4 chiffres hexadcimaux.

    Une chane unicode est prcde dun u minuscule avant les guillemets.il suffira de reprsenter le code hexadcimal prcd de la squence dchapement unicode (\u).

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = u"Bonjour\u0020tout\u0020le\u0020monde.">>> au'Bonjour tout le monde.'>>>>>> ^Dcoruscant:~/Langages/Python chris$

    Les chanes Unicode.

  • C. Aperghis-Tramoni Dpartement dInformatique32

    Un nom de variable est constitu de caractres alphabtiques,de chiffres et du caractre blanc soulign (_).Le premier caractre nest jamais un chiffre.Les lettres majuscules sont diffrencies des lettres minuscules.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> variable = 10>>> Variable = 20>>> variable10>>> Variable20>>> An_2007 = 2007>>> An_20072007>>> _2007 = 2007>>> _20072007>>> 25Decembre = "Noel" File "", line 1 25Decembre = "Noel" ^SyntaxError: invalid syntax>>> ^Dcoruscant:~/Langages/Python chris$

    Les variables.

  • C. Aperghis-Tramoni Dpartement dInformatique33

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> variable = 10>>> variable10>>> variable = variable * 5>>> variable50>>> type(variable)

    >>> variable = float(variable)>>> variable50.0>>> type(variable)

    >>> variable = "Caracteres">>> variable'Caracteres'>>> type(variable)

    >>> variable = True>>> type(variable)

    >>> variable = None>>> type(variable)

    >>> ^Dcoruscant:~/Langages/Python chris$

    Modification des variables.

  • C. Aperghis-Tramoni Dpartement dInformatique34

    En mode interactif, tout rsultat est affect une variable standard (_. ).Cette variable est affecte chaque fois qu'un calcul est effectu.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 2**1665536>>> print _65536>>> _ / 416384>>> _ / 5.03276.8000000000002>>> "Bonjour."'Bonjour.'>>> print _Bonjour.>>> _[2:4]'nj'>>>>>> ^Dcoruscant:~/Langages/Python chris$

    La variable standard.

  • C. Aperghis-Tramoni Dpartement dInformatique35

    Comme en Perl, le signe = effectue laffectation dune valeur une variable.Ces loprateur == qui permet la comparaison de deux valeurs .

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> A1 = 10>>> A2 = 20>>> A1 == A2False>>> ^Dcoruscant:~/Langages/Python chris$

    Affectation et comparaison.

  • C. Aperghis-Tramoni Dpartement dInformatique36

    [coruscant:~/python] coruscant:~ chris$ coruscant:~/Langages/Python chris$ Python2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> A = B = C = 50>>> A50>>> B50>>> C50>>> A,B,C = 100,101,102>>> A100>>> B101>>> C102>>> A,B = B,A>>> A101>>> B100>>> ^Dcoruscant:~/Langages/Python chris$

    Affectations.

  • C. Aperghis-Tramoni Dpartement dInformatique37

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> Longueur = 10>>> Largeur = 50>>> Hauteur = 45>>> Volume = Longueur * Largeur * Hauteur>>> Volume22500>>> Rayon = 10>>> Surface = Diametre * 3.14159Traceback (most recent call last): File "", line 1, in ?NameError: name 'Diametre' is not defined>>> Surface = 2 * Rayon * 3.14159>>> Surface62.831800000000001>>> ^Dcoruscant:~/Langages/Python chris$

    Expressions.

  • C. Aperghis-Tramoni Dpartement dInformatique38

    + Addition

    - Soustraction

    * Multiplication

    ** Exponentiation

    / Division

    Arithmtiques

    == Egal

    > Suprieur

    < Infrieur

    >= Suprieur ou gal

  • C. Aperghis-Tramoni Dpartement dInformatique39

    Hirarchie classique :/ plus prioritaire que ** Plus priotaire que + -and plus prioritaire que or

    Pour ne pas avoir de surprises, toujours utiliser une notation parenthse.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 10 ** 2100>>> 10 % 31>>> 10 < 20True>>> x = 5>>> (3*(x**2))+(5*x)+10110>>> ^Dcoruscant:~/Langages/Python chris$

    Priorits.

  • C. Aperghis-Tramoni Dpartement dInformatique40

    Les oprations bolennes.

    Dcalage gauche : >> a = 1>>> b = 1>>> a >> a | b1>>> a & b1>>> a ^ b0>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique41

    Les oprateurs logiques.

    N'importe quelle valeur diffrente de zro ou vide sera value "vrai"."non Vrai", ou "faux" sera le rsultat de l'valuation de zro, vide , ou None.

    Les tests d'galit renvoient 1 (vrai) ou 0 (Faux).Les oprateurs boolens "and" et "or" renvoient un objet oprande vrai ou faux.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = 10>>> b = 20>>> c = a == b>>> c0>>> ^Dcoruscant:~/Langages/Python chris$ pythonPython 2.2 (#1, 07/14/02, 23:25:09)[GCC Apple cpp-precomp 6.14] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = 10>>> b = 20>>> c = 20>>> x = a > b == c>>> x0>>> ^Dcoruscant:~/Langages/Python chris$

    Ici, on enchane les comparaisons.la valeur de x et conditionne deux conditions, (a > b) et (b == c)

  • C. Aperghis-Tramoni Dpartement dInformatique42

    Les objets oprande.

    Les oprateurs boolens "and" et "or" renvoient toujours un objet.

    A or B

    L'opration se fait en court circuit, c'est dire que le rsultat sera valu ds que possible.

    Table de vrit

    A

    Vrai

    Vrai

    Faux

    Faux

    B

    Vrai

    Faux

    Vrai

    Faux

    A or B

    Vrai

    Vrai

    Vrai

    Faux

    Lorsque le premier oprande est vrai, on connatle rsultat final sans avoir a valuer le second.

    Lorsque le premier oprande est faux, il estindispensable d'valuer le second pourconnatre le rsultat final.

    A and B

    Table de vrit

    A

    Faux

    Faux

    Vrai

    Vrai

    B

    Vrai

    Faux

    Vrai

    Faux

    A and B

    Faux

    Faux

    Faux

    Vrai

    Lorsque le premier oprande est faux, on connatle rsultat final sans avoir a valuer le second.

    Lorsque le premier oprande est vrai, il estindispensable d'valuer le second pourconnatre le rsultat final.

  • C. Aperghis-Tramoni Dpartement dInformatique43

    Exemples.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> (1 or 3, 4 or 2, 6 or 8, 9 or 5)(1, 4, 6, 9)>>> (None or 3, 4 or None, 6 or 0, 0 or 5)(3, 4, 6, 5)>>> (0 or None, None or 0)(None, 0)>>> (1 and 3, 4 and 2, 6 and 8, 9 and 5)(3, 2, 8, 5)>>> (None and 3, 4 and None, 6 and 0, 0 and 5)(None, None, 0, 0)>>> (0 and None, None and 0)(0, None)>>> ^Dcoruscant:~/Langages/Python chris$

    Cration d'une liste.

  • C. Aperghis-Tramoni Dpartement dInformatique44

    Python sait grer les calculs sur les nombres complexes.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> complex(1,2)(1+2j)>>> 3j + complex(2,3)(2+6j)>>> _ + (1+2j)(3+8j)>>> 1j ** 2(-1+0j)>>> _ + 2j(-1+2j)>>> _ / 3(-0.33333333333333331+0.66666666666666663j)>>> a = _>>> a.real-0.33333333333333331>>> a.imag0.66666666666666663>>> ^Dcoruscant:~/Langages/Python chris$

    Un mot des complexes.

  • C. Aperghis-Tramoni Dpartement dInformatique45

    Une liste est une suite de valeurs prsentes entre crochets et spares par des virgules.Une liste n'est pas sans rappeler la notion de vecteur index bien connue dans leslangages traditionnels, il ne faudrait toutefois pas la rduire ce type d'utilisation.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> l = ["Nous","sommes","en","l'an",2007]>>> l['Nous', 'sommes', 'en', "l'an", 2007]>>> l[0]'Nous'>>> l[1:3]['sommes', 'en']>>> l[4] = l[4] + 1>>> l['Nous', 'sommes', 'en', "l'an", 2008]>>> ^Dcoruscant:~/Langages/Python chris$

    Les listes.

  • C. Aperghis-Tramoni Dpartement dInformatique46

    Il est aussi possible de travailler sur les sous listes d'une liste.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = [10,11,12,13,14,15,16]>>> a[10, 11, 12, 13, 14, 15, 16]>>> a[0:2] = []>>> a[12, 13, 14, 15, 16]>>> a[0:1] = [100,200]>>> a[100, 200, 13, 14, 15, 16]>>> a[3:3]=a[1:4]>>> a[100, 200, 13, 200, 13, 14, 14, 15, 16]>>> len(a)9>>> a[3] = ["a","b","c","d"]>>> a[100, 200, 13, ['a', 'b', 'c', 'd'], 13, 14, 14, 15, 16]>>> ^Dcoruscant:~/Langages/Python chris$

    Les sous listes.

  • C. Aperghis-Tramoni Dpartement dInformatique47

    Autres exemples d'oprations.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>>L1=[]>>>L1[]>>> L2=[0, 1, 2, 3]>>> L2[0, 1, 2, 3]>>> L3=[ 'abc', ['def', 'ghi'], 'jkl', ['m', 'n', 'o', 'p']]>>> L3['abc', ['def', 'ghi'], 'jkl', ['m', 'n', 'o', 'p']]>>> L2[2], L3[3][3](2, 'p')>>> L2[0:2],L3[3][1:3]([0, 1], ['n', 'o'])>>> L4=[4, 5, 6, 7, 8, 9]>>> L4[4, 5, 6, 7, 8, 9]>>> L5 = L2 + L4>>> L5[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> L6 = L2 * 3>>> L6[0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique48

    Mthodes.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> L1=[10, 1, 2, 55, 91, 3, 21, 70, 9, 33]>>> L1[10, 1, 2, 55, 91, 3, 21, 70, 9, 33]>>> 55 in L1True>>> 35 in L1False>>> L1.append(72)>>> L1[10, 1, 2, 55, 91, 3, 21, 70, 9, 33, 72]>>> L1.sort()>>> L1[1, 2, 3, 9, 10, 21, 33, 55, 70, 72, 91]>>> L1.index(33)6>>> L1.reverse()>>> L1[91, 72, 70, 55, 33, 21, 10, 9, 3, 2, 1]>>> del L1[2]>>> L1[91, 72, 55, 33, 21, 10, 9, 3, 2, 1]>>> L1[3:6]=[]>>> L1[91, 72, 55, 9, 3, 2, 1]>>> L1[1]=100>>> L1[91, 100, 55, 9, 3, 2, 1]

  • C. Aperghis-Tramoni Dpartement dInformatique49

    Mthodes.

    >>> L1[91, 100, 55, 9, 3, 2, 1]>>> L1[2:3]=['a', 'b', 'c', 'd', 'e']>>> L1[91, 100, 'a', 'b', 'c', 'd', 'e', 9, 3, 2, 1]>>> L2 = range (10)>>> L2[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> L3 = range (20,29)>>> L3[20, 21, 22, 23, 24, 25, 26, 27, 28]>>> L4 = range (10,50,5)>>> L4[10, 15, 20, 25, 30, 35, 40, 45]>>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique50

    Les dictionnaires.

    Cest un type de donnes spcifique intgr au langage.

    D'autres langages (perl, ruby) proposent ce type de donnes sous le nom de hash.

    Cest une structure laquelle il est possible daccder au moyen dune cl qui peuttre de nimporte quel type non modifiable.

    Chane.Nombre.Tuple sous rserve de ne contienir que des chanes ou des nombres.

    Il est interdit dutiliser une liste comme cl daccs un dictionnaire car une liste estmodifiable au moyen de plusieurs mthodes que nous avons voqu.

    Un dictionnaire est en quelque sorte un ensemble non ordonn de paires

    Il est dclar lintrieur daccolades.Les couples cle :valeur seront spars les uns des autres par des virgules.

  • C. Aperghis-Tramoni Dpartement dInformatique51

    Exemples.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> jardin={'Tulipes':10,'Jonquilles':25,'Begonias':15,'Iris':50}>>> jardin{'Iris': 50, 'Jonquilles': 25, 'Begonias': 15, 'Tulipes': 10}>>> jardin['Jonquilles']25>>> jardin['Tulipes']10>>> jardin.keys()['Iris', 'Jonquilles', 'Begonias', 'Tulipes']>>> jardin.has_key('Begonias')True>>> del (jardin['Begonias'])>>> jardin{'Iris': 50, 'Jonquilles': 25, 'Tulipes': 10}>>> jardin.has_key('Begonias')False>>> ^Dcoruscant:~/Langages/Python chris$

    Outre les dclaration et les accs, l'exemple ci dessus montre quelquesfonctions et mthodes permettant de travailler sur les dictionnaires.

    La mthode has_keys() permet de tester si une cl existe ou non.

    La mthode keys() retourne le liste des cls d'accs aux lments de cedictionnaire. Remarquons au passage que lordre dans lequel la liste de cls estretourne est quelconque..

  • C. Aperghis-Tramoni Dpartement dInformatique52

    Dictionnaire de dictionnaire.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> jardin={'Allee1' : {'Tulipes':10,'Jonquilles':25},'Allee2' : {'Begonias':15,'Iris':50}}>>> jardin{'Allee2': {'Iris': 50, 'Begonias': 15}, 'Allee1': {'Jonquilles': 25, 'Tulipes': 10}}>>> jardin['Allee1']{'Jonquilles': 25, 'Tulipes': 10}>>> jardin['Allee1']['Jonquilles']25>>> len(jardin)2>>> len(jardin['Allee1'])2

    >>> ^Dcoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique53

    Exemple.

    coruscant:~/Langages/Python chris$ cat ess.py#!/usr/bin/pythonchiffre = {'Un' : {'Uk': 'One','De': 'Ein','Sp': 'Un' },\ 'Deux' : {'Uk': 'Two','De': 'Zwei','Sp': 'Dos' },\ 'Trois' : {'Uk': 'Three','De': 'Drei','Sp': 'Tres' },\ 'Quatre' : {'Uk': 'Four','De': 'Vier','Sp': 'Cuatro' },\ 'Cinq' : {'Uk': 'Five','De': 'Funf','Sp': 'Cinco' },\ 'Six' : {'Uk': 'Six','De': 'Sechs','Sp': 'Seis' },\ 'Sept' : {'Uk': 'Seven','De': 'Sieben','Sp': 'Siete' },\ 'Huit' : {'Uk': 'Eight','De': 'Acht','Sp': 'Ocho' },\ 'Neuf' : {'Uk': 'Nine','De': 'Neun','Sp': 'Neun' }}

    c = raw_input('Quel est le chiffre : ')l = raw_input('Quelle est la langue (Uk, De, Sp) : ' )

    trad = chiffre[c][l]

    print "Resultat de la traducton : ", tradcoruscant:~/Langages/Python chris$ ./ess.pyQuel est le chiffre : NeufQuelle est la langue (Uk, De, Sp) : SpResultat de la traducton : Neuncoruscant:~/Langages/Python chris$

    Traduction d'un chiffre.

  • C. Aperghis-Tramoni Dpartement dInformatique54

    Impression d'un dictionnaire.

    Il existe un moyen simple de procder limpression des valeurs d'un dictionnaire, Ilsuffit de faire rfrence la cl d'accs du dictionnaire dans la description duformat.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonjardin={'Tulipes':10,'Jonquilles':25,'Begonias':15,'Iris':50}print ('Composition du jardin :')print ' Begonias: %(Begonias)d\n Tulipes: %(Tulipes)d\n Jonquilles: %(Jonquilles)d\n Iris: %(Iris)d' % jardincoruscant:~/Langages/Python chris$ ./prog.pyComposition du jardin : Begonias: 15 Tulipes: 10 Jonquilles: 25 Iris: 50coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique55

    Les modules permettent d'accrotre les possibilits du langage.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> sqrt(2)Traceback (most recent call last): File "", line 1, in ?NameError: name 'sqrt' is not defined>>> import math>>> sqrt(2)Traceback (most recent call last): File "", line 1, in ?NameError: name 'sqrt' is not defined>>> math.sqrt(2)1.4142135623730951>>> ^Dcoruscant:~/Langages/Python chris$

    La notion de module.

  • C. Aperghis-Tramoni Dpartement dInformatique56

    Le mode interactif peut tre utilis pour crire de petites applications.Lorsquune commande tient sur plusieurs lignes, il passe alors au prompt secondaire ( ).Ceci est ncessaire lors de l'criture de certaines instructions, par exemple pour un if.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = 1>>> if a :... print "Vrai\n"...Vrai

    >>>coruscant:~/Langages/Python chris$

    Le mode interactif.

  • C. Aperghis-Tramoni Dpartement dInformatique57

    Que lon soit en mode fichier ou en mode interactif, la prsence dune erreur dclenche limpression dunmessage.

    L'interprteur visualise la ligne sur laquelle lerreur a t dtecte.Le symbole ( ^ ) met en vidence lendroit ou se situe le problme.

    coruscant:~/Langages/Python chris$ pythonPython 2.4.2 (#1, Nov 29 2005, 10:58:42)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> print Bonjour tout le monde\n" File "", line 1 print Bonjour tout le monde\n" ^SyntaxError: invalid syntax>>>coruscant:~/Langages/Python chris$

    Grer les erreurs.

  • C. Aperghis-Tramoni Dpartement dInformatique58

    Lire une information.

    Pour saisir une information au clavier :input()

    Le typage est dynamiquePossibilit d'afficher une invite :

    n = input("Entrez un entier : ")

    Pour forcer une saisie en mode texte :raw_input()

    On peut ensuite procder un transcodage de l'information.

    c = raw_input("Donnez moi un flottant : ")# Transcodage de la chane de caractre en flotant.f = float(a)# ou plus simplement :x = float(raw_input("Donnez moi un flottant : "))

  • C. Aperghis-Tramoni Dpartement dInformatique59

    Imprimer un rsultat.

    Affichage d'une information sur l'cranprint

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona = int(raw_input("Donnez moi un entier : "))print "Valeur de a : ",aprint "Le carre de ",a, "est egal a :", a * acoruscant:~/Langages/Python chris$ ./prog.pyDonnez moi un entier : 2Valeur de a : 2Le carre de 2 est egal a : 4coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique60

    Les formats d'impression.

    C'est le moyen de contrler l'impression.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonn = 10# Impression en base 10.print "%d en base 10 : %d" % (n, n)# Impression en base 8.print "%d en base 8 : %o" % (n, n)# Impression en base 16.print "%d en base 16 : %x" % (n, n)coruscant:~/Langages/Python chris$ ./prog.py10 en base 10 : 1010 en base 8 : 1210 en base 16 : acoruscant:~/Langages/Python chris$

    %d : Affichage en base 10.%o : Affichage en base 8.%x : Affichage en base 16.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonpi = 3.1415926535897931# Affichage sur 4 positions, 2 chiffres apres la virgule.print "%4.2f" %(pi)# Affichage en format exponentiel.print "%.4e" %(pi)# Affichage optimal.print "%g" %(pi)coruscant:~/Langages/Python chris$ ./prog.py3.143.1416e+0003.14159coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique61

    Usage du format.

    Cest la chane de caractres qui suit le % qui caractrise le type de ladonne, son affichage et la (ou les) donne(s) afficher

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonimport matha = math.piprint aprint '' %aprint '' %aprint '' %acoruscant:~/Langages/Python chris$ ./prog.py

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique62

    Rsum des formats d'impression.

    %d Entier sign.

    %u Entier non-sign.

    %o Octal non-sign.

    %x Hexadcimal non-sign.

    %s Chane de caractres.%f Flottant.

    %e Flottant en format exponentiel.

    %g Flottant en format optimal suivant sa longueur.

    Remarque :Les formats exigent ce que le type de la donne corresponde avec letype daffichage.

    Si ce nest pas le cas, une exception est gnre.

    Dans le cas ou le type de la donne peut varier, le format %s peut treutilis, Il a pour effet de systmatiquement convertir la donne en chanede caractres par lintermdiaire de la fonction str().

  • C. Aperghis-Tramoni Dpartement dInformatique63

    Le module string.

    Ce module offre une srie de formats destins afficher les chanes de caractres.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonimport stringfor x in range(1, 6): print 'Nombre :',string.rjust(`x`, 2), print '- Carre :',string.rjust(`x*x`, 3), print '- Cube :',string.rjust(`x*x*x`, 4)coruscant:~/Langages/Python chris$ ./prog.pyNombre : 1 - Carre : 1 - Cube : 1Nombre : 2 - Carre : 4 - Cube : 8Nombre : 3 - Carre : 9 - Cube : 27Nombre : 4 - Carre : 16 - Cube : 64Nombre : 5 - Carre : 25 - Cube : 125coruscant:~/Langages/Python chris$

    Exemple, imprimer pour les 5 premiers entiers.Le nombre.Son carr.Son cube.

    A noter la virgule la fin des deux premiers print, afin de supprimer le retour laligne.

  • C. Aperghis-Tramoni Dpartement dInformatique64

    Remarque.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/python#!/usr/bin/pythonfor x in range(1, 6): print 'Nombre : %2d - Carre : %3d - Cube : %4d' %(x, x*x, x*x*x)coruscant:~/Langages/Python chris$ ./prog.pyNombre : 1 - Carre : 1 - Cube : 1Nombre : 2 - Carre : 4 - Cube : 8Nombre : 3 - Carre : 9 - Cube : 27Nombre : 4 - Carre : 16 - Cube : 64Nombre : 5 - Carre : 25 - Cube : 125coruscant:~/Langages/Python chris$

    Cette prsentation aurait tout aussi bien pu se faire en utilisant les formats.

  • C. Aperghis-Tramoni Dpartement dInformatique65

    Les mthodes string.

    string.rjust(valeur,longueur)permet de cadrer la chane de caractre reprsentative de la valeur numrique (lesvaleurs sont prsentes entre antiquotes) sur la droite dune champ dont la longueurest donne par le second argument.

    string.rjust(`x`,2)

    Permet de convertir le nombre x (par exemple 3) en une chane de caractres (' 3')puis rserve deux emplacements (valeur du second argument) et cadre la chane droite.

    De la mme manire nous disposons des mthodesstring.ljust(ch,long) (cadrage gauche)string.center(ch,long) (centrage)

  • C. Aperghis-Tramoni Dpartement dInformatique66

    La mthode string.zfill().

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonimport stringx = string.zfill(`10`,5)print "string.zfill(`10`,5) donne :", xx = string.zfill(`-25`,7)print "string.zfill(`-25`,7) donne :", xx = string.zfill(`176485645`,3)print "string.zfill(`176485645`,3) donne :",xcoruscant:~/Langages/Python chris$ ./prog.pystring.zfill(`10`,5) donne : 00010string.zfill(`-25`,7) donne : -000025string.zfill(`176485645`,3) donne : 176485645coruscant:~/Langages/Python chris$

    string.zfill(ch,long)

    Permet de complter une chane numrique en rajoutant des zros non significatifs gauche.Cette fonction est aussi apte grer le signe (+ ou -)..

  • C. Aperghis-Tramoni Dpartement dInformatique67

    Les blocs.

    Toutes les instructions composes en Python ont toujours la mme structure : uneligne d'en-tte termine par un deux point, suivie par une ou plusieurs instructionsindentes sous cette ligne d'en-tte.

    Ligne d'en-tte : premire instruction du bloc ... ... dernire instruction du blocInstruction suivante

    S'il y a plusieurs instructions indentes sous la ligne d'en-tte, elles doivent l'treexactement au mme niveau.Elles constituent un bloc d'instructions.

  • C. Aperghis-Tramoni Dpartement dInformatique68

    Instructions, blocs et mise en page.

    Dans certains langages de programmation, chaque ligne d'instructions par uncaractre spcifique.Dans Python, c'est le caractre de saut la ligne qui joue ce rle.Lorsqu'une instruction dpasse la longueur de la ligne, on utilise le caractreantislash (\) pour indiquer la continuation.Un commentaire commence toujours par le caractre spcial #, tout ce qui estinclus entre ce caractre et la fin de ligne est compltement ignor par lecompilateur.

    Dans la plupart des langages, un blocd'instructions est systmatiquementdlimit par des symboles ou des motscl spcifiques.En Python, c'est l'indentation,qui jouele rle de dlimiteur de blocs.

    Bloc 1...Ligne d'en tte :

    Bloc 2...Ligne d'en tte :

    Bloc 3...

    Suite du bloc 2...

    Suite du bloc 1...

  • C. Aperghis-Tramoni Dpartement dInformatique69

    Un programme Python se doit de commencer par la ligne :#!/usr/bin/python

    coruscant:~/Langages/Python chris$ cat fibo.py#!/usr/bin/python# Les premiers elements de la suite de Fibonacci.a, b = 0, 1while b < 1000: print b a, b = b, a+bcoruscant:~/Langages/Python chris$ ./fibo.py1123581321345589144233377610987coruscant:~/Langages/Python chris$

    Crer un programme.

  • C. Aperghis-Tramoni Dpartement dInformatique70

    #!/usr/bin/python# Les premiers elements de la suite de Fibonacci.a, b = 0, 1while b < 1000: print b a, b = b, a+b

    La ligne : #!/usr/bin/pythonpermettra d'excuter le programme en invoquant son nom.

    Ligne de commentaire.

    Affectation multiple.a,b = 0,1

    Est identique a = 0b = 1

    Linstruction while b

  • C. Aperghis-Tramoni Dpartement dInformatique71

    Les conditions.

    Une condition ne se limite pas l'utilisation des oprateurs de comparaison. Tousles types d'oprateurs peuvent tre utiliss.

    Les oprateurs in et not testent si une valeur est prsente ou non dans unesquence donne.

    Les oprateurs is et is_not vrifient si deux objets modifiables sontrellement identiques.

    Tous les oprateurs de comparaison ont une priorit identique, infrieure celle detous les oprateurs numriques.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona = 10b = 20c = a == bprint "resultat de c = a == b :", ccoruscant:~/Langages/Python chris$ ./prog.pyresultat de c = a == b : Falsecoruscant:~/Langages/Python chris$

    Dans cet exemple, la valeur de x rfre deux conditions : (a > b) et (b == c).

  • C. Aperghis-Tramoni Dpartement dInformatique72

    Oprateurs boolens.

    Il est aussi possible dutiliser les oprateurs boolens and, or et not.Ils auront une priorit infrieure celle des oprateurs de comparaison.Entre eux, not est prioritaire par rapport and, lui mme prioritaire par rapport or.

    not a and not b or c

    Est quivalent en expression parenthse :

    ((not a) and (not b)) or c .

    Nous avons dj vu que comme cest le cas en Perl, les oprations boolennes soneffectues en court circuit, cest dire que ds quun rsultat intermdiaire permetde dterminer le rsultat final, lvaluation s'arrte.Le rsultat dune expression boolenne peut tre affect une variable.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona,b,c,d = '','','res1','res2'r = a or b or c or dprint "resultat de a or b or c or d : ", rs = a or b and c or dprint "resultat de a or b and c or d : ", scoruscant:~/Langages/Python chris$ ./prog.pyresultat de a or b or c or d : res1resultat de a or b and c or d : res2coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique73

    Comparaison de structures.

    On peut procder des comparaisons sur des objets de type squence, conditionque les objets en question soient de mme type.

    Cest lordre lexicographique qui est utilis pour fournir le rsultat.

    Cest le code ASCII qui sera utilis pour dterminer lordre.

    La comparaison porte dans un premier temps sur les deux premiers lments, si lersultat nest pas une identit, il devient dfinitif, dans le cas contraire, lacomparaison porte sur les deux lments suivants, et ainsi de suite jusqupuisement de lune des deux squences.

    Dans le cas ou deux lments comparer sont eux mmes des squences de typequivalent, la comparaison est reconsidre de manire rcursive.

    Au moment de lpuisement des squences, si le rsultat final est une galit, lesdeux squences sont considres comme identiques.

    Si une des deux squences est une sous squence initiale de lautre, ce sera la pluscourte qui sera considre comme infrieure lautre..

  • C. Aperghis-Tramoni Dpartement dInformatique74

    Application.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = ( 1 ,2,3 )y = ( 1,10,3 )print "On teste si ", x, " est inferieur a ",y, ". Resultat : ", x < yx = (1,2,3)y = (1,2,3)print "On teste si ", x, " est egal a ",y, ". Resultat : ", x == yx = 'Bonjour'y = 'Monsieur'print "On teste si ", x, " est superieur a ",y, ". Resultat : ", x > yx = (1,2,3)y = (1,2,3,4)print "On teste si ", x, " est superieur a ",y, ". Resultat : ", x > yx = (1,2,3)y = (1.0,2.0,3.0)print "On teste si ", x, " est egal a ",y, ". Resultat : ", x == yx = (1,2,('aa','bb'),3)y = (1,2,('aa','bc'),5)print "On teste si ", x, " est inferieur a ",y, ". Resultat : ", x == ycoruscant:~/Langages/Python chris$ ./prog.pyOn teste si (1, 2, 3) est inferieur a (1, 10, 3) . Resultat : TrueOn teste si (1, 2, 3) est egal a (1, 2, 3) . Resultat : TrueOn teste si Bonjour est superieur a Monsieur . Resultat : FalseOn teste si (1, 2, 3) est superieur a (1, 2, 3, 4) . Resultat : FalseOn teste si (1, 2, 3) est egal a (1.0, 2.0, 3.0) . Resultat : TrueOn teste si (1, 2, ('aa', 'bb'), 3) est inferieur a (1, 2, ('aa', 'bc'), 5) .Resultat : Falsecoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique75

    Possibilit dutiliser la directive elif (pour else if) qui permet deviter de cumuler des indentations.Une squence if .

    elif .elif .else .

    Est un substitut aux instructions de type switch ou case de certains autres lengages.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/python

    a=1if a != 0:

    print "La variable a est non nulle"else:

    print "La variable a est nulle"print "Fin du programme."coruscant:~/Langages/Python chris$ ./prog.pyLa variable a est non nulleFin du programme.coruscant:~/Langages/Python chris$

    Instruction if.

  • C. Aperghis-Tramoni Dpartement dInformatique76

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona=2if a == 0:

    print "La variable a est egale a 0."elif a ==1: print "La variable a est egale a 1."elif a ==2: print "La variable a est egale a 2."else: print "La variable a est superieure a 2."print "Fin du programme. coruscant:~/Langages/Python chris$ ./prog.pyLa variable a est egale a 2.Fin du programme.coruscant:~/Langages/Python chris$

    Instruction if elif.

  • C. Aperghis-Tramoni Dpartement dInformatique77

    Linstruction for nitre pas systmatiquement sur une suite de valeurs numriques.

    Nimporte quelle squence dlments (liste, chane) sera explore.

    Sur une liste, litration rcupre les lments les uns la suite des autresSur une chane ce seront les caractres..

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona=["Bonjour", "tout", "le", "monde!"]for x in a: print x, len(x)coruscant:~/Langages/Python chris$ ./prog.pyBonjour 7tout 4le 2monde! 6coruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona=Pythonfor x in a: print x,coruscant:~/Langages/Python chris$ ./prog.pyP y t h o ncoruscant:~/Langages/Python chris$

    Instruction for.

  • C. Aperghis-Tramoni Dpartement dInformatique78

    Instruction while.

    Elle se prsente sous la forme :while condition : Instruction Instruction

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonliste = [ 10, 20, 30, 40, 50, 60, 70, 80, 90 ]somme = 0i = 0while i < len(liste): somme = somme + liste[i] i = i + 1print "Somme: ", sommecoruscant:~/Langages/Python chris$ ./prog.pySomme : 450coruscant:~/Langages/Python chris$

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonliste = [ 10, 20, 30, 40, 50, 60, 70, 80, 90 ]somme = 0for x in liste :somme = somme + xprint "somme: ", sommecoruscant:~/Langages/Python chris$ ./prog.pySomme : 450coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique79

    Il est aussi possible, bien que non conseill, de modifier l'lment en cours ditration.

    Dans ce cas, litration porte sur une copie de lobjet.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythoni = 0a=["Bonjour", "tout", "le", "monde!"]# On fait une copie de la liste entire par dcoupage.for x in a[:]: i +=1 a.insert(i,len(x)) i +=1print acoruscant:~/Langages/Python chris$ ./prog.py['Bonjour', 7, 'tout', 4, 'le', 2, 'monde!', 6]coruscant:~/Langages/Python chris$

    Modification de llment.

  • C. Aperghis-Tramoni Dpartement dInformatique80

    C'est une fonction intgre linterprteur qui permet de gnrer une liste contenant des nombres enprogression arithmtique.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona = range (10)print "Resultat de range (10): ", a, "\n"b = range (5,15)print "Resultat de range (5,15): ", b, "\n"c = range (-5,5)print "Resultat de range (-5,5): ", c, "\n"d = range (0,50,5)print "Resultat de range (0,50,5): ", d, "\n"coruscant:~/Langages/Python chris$ prog.pyResultat de range (10): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    Resultat de range (5,15): [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

    Resultat de range (-5,5): [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]

    Resultat de range (0,50,5): [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]coruscant:~/Langages/Python chris$

    La fonction range.

  • C. Aperghis-Tramoni Dpartement dInformatique81

    Ainsi, si on dsire explorer les lments dune liste de longueur n, il est ncessaire de gnrer la suitede valeurs n-1.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythona=["Il","fait","beau","et","chaud!"]for x in range(len(a)): print "Indice : ",x," Valeur : ",a[x]coruscant:~/Langages/Python chris$ prog.pyIndice : 0 Valeur : IlIndice : 1 Valeur : faitIndice : 2 Valeur : beauIndice : 3 Valeur : etIndice : 4 Valeur : chaud!coruscant:~/Langages/Python chris$

    Exploration de liste.

  • C. Aperghis-Tramoni Dpartement dInformatique82

    Autre exploration de liste.

    Comment liminer les doublons dans une liste.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonliste = [9,25,12,40,3,5,12,13,27,5,9,3,8,22,40,3,6,5,25]res = []for element in liste : if element not in res : res.append(element)res.sort()print "Le resultat est : \n", rescoruscant:~/Langages/Python chris$ prog.pyLe resultat est :[3, 5, 6, 8, 9, 12, 13, 22, 25, 27, 40]coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique83

    Certains langages de programmation proposent linstruction break qui permet une sortie anticipe dela boucle la plus interne alors que linstruction continue met un terme litration courante pourcontinuer sur la suivante.

    A noter aussi la clause else habituellement utilise comme alternative dune condition qui est dansPython aussi utilisable dans une boucle while.

    Elle sera excute lorsque la condition deviendra fausse mais elle sera saute si un break seprsente.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonfor n in range(2, 10): for x in range(2, n): if n % x == 0: print n, "=", x, "*", n/x else: print n, "est premier" breakcoruscant:~/Langages/Python chris% prog.py3 est premier4 = 2 * 25 est premier6 = 2 * 37 est premier8 = 2 * 49 est premiercoruscant:~/Langages/Python chris$

    Voici un petit programme qui va nouspermettre de dterminer si un nombreest premier ou non.

    Contrle de boucle.

  • C. Aperghis-Tramoni Dpartement dInformatique84

    Les fichiers.

    Linstruction permet de crer un objet de type fichier.Syntaxe.

    open(nom, mode)

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')print xcoruscant:~/Langages/Python chris% prog.py

    coruscant:~/Langages/Python chris$

    texte.txt Est le nom du fichierr Est la manire dutiliser le fichier

    Effet

    Le fichier correspondant est ouvert en lecture exclusivement.

    Le fichier correspondant est ouvert en criture exclusivement.

    Le fichier correspondant est accessible en lecture et en criture.

    Accs binaire en lecture sur certaines plates-formes (Windows, MacIntosh).

    Accs binaire en criture sur certaines plates-formes (Windows, MacIntosh).

    Accs binaire en lecture et criture sur certaines plates-formes (Windows, MacIntosh).

    Le fichier correspondant est ouvert en criture incrmentale.

    Mode

    r

    w

    r+

    rb

    wb

    r+b

    a

  • C. Aperghis-Tramoni Dpartement dInformatique85

    Mode par dfaut.

    Si aucun mode nest spcifi au moment de louverture, le mode par dfaut est r.

    La diffrence entre l'accs normal et binaire porte sur les caractres de fin de lignequi seront ventuellement modifis en mode texte et resteront inchangs en modebinaire.Il convient donc dtre extrmement prudent, car si ce type de modification estimperceptible en mode texte, elle altrera gravement les fichiers purement binaires(images, sons, excutables)

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt')print xcoruscant:~/Langages/Python chris% prog.py

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique86

    Mthodes.

    Une fois le fichier ouvert :descripteur=open(nom_de_fichier,mode)

    Plusieurs mthodes permettent de le manipuler.

    Nous allons les voir en dtail.

  • C. Aperghis-Tramoni Dpartement dInformatique87

    La mthode close().

    descripteur.close()

    Permet de fermer le fichier concern.

    coruscant:~/Langages/Python chris$ cat prog.py #!/usr/bin/pythonx = open('texte.txt','r')print xx.close()print xcoruscant:~/Langages/Python chris% prog.py

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique88

    La mthode fileno()

    descripteur.fileno()

    Cette mthode retourne le numro du canal (un nombre entier) dentre/sortieouvert.Chaque canal d'entre ou de sortie ouvert a en interne un numro, mmeSTDIN, STDOUT et STDERR.C'est cette mthode permet de le connatre.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')print xy = x.fileno()print "Numero de canal : ", yx.close()coruscant:~/Langages/Python chris% prog.py

    Numero de canal : 3coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique89

    La mthode flush().

    descripteur.flush()

    Cette mthode permet de nettoyer (de vider) le buffer interne associ aufichier.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')print xx.flush()print "Numero de canal : ", yx.close()coruscant:~/Langages/Python chris% prog.py

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique90

    Mthode isatty().

    descripteur.isatty()

    Cette mthode retourne la valeur vraie si le descripteur correspond a unterminal de type tty.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')print xy = x.isatty()print yx.close()coruscant:~/Langages/Python chris% prog.py

    Falsecoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique91

    Mthode read().

    descripteur.read([n])

    Cette mthode permet de lire au plus n bytes sur le fichier spcifi.Les informations lues sont retournes en tant que chane de caractres.Si la longueur nest pas spcifie le fichier est lu jusqu la fin (eof).Si il ny a pas de caractres a lire (eof), la chane retourne sera vide.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')y = x.read()print yx.close()coruscant:~/Langages/Python chris% prog.pyOn entend tous les jours, a propos de productions litteraires, parler de la dignitede tel genre, des convenances de tel autre, des limiter de celui-ci, des latitudesde celui-la ; la tragedie interdit ce que le roman permet; la chanson tolere ce quel'ode defend, etc. L'auteur de ce livre a le malheur de ne rien comprendre a toutcela; il y cherche des choses et n'y voit que des mots; il lui semble que ce quiest reellement beau et vrai est beau et vrai partout; que ce qui est dramatique dansun roman sera dramatique sur la scene; que ce qui est lyrique dans un couplet seralyrique dans une strophe; qu'enfin et toujours la seule distinction veritable dansles uvres de l'esprit est celle du bon et du mauvais. La pensee est une terre viergeet feconde dont les productions veulent croitre librement, et, pour ainsi dire, auhasard, sans se classer, sans s'aligner en plates-bandes comme les bouquets dans unjardin classique de Le Notre, ou comme les fleurs du langage dans un traite de rhetorique.coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique92

    Mthode readline().

    descripteur.readline()

    Cette mthode permet d'accder une ligne du fichier.Si la fin de fichier est atteinte la chane retourne sera vide.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')while (True) : y = x.readline() if not y : break print y,x.close()coruscant:~/Langages/Python chris% prog.pyOn entend tous les jours, a propos de productions litteraires, parler de la dignitede tel genre, des convenances de tel autre, des limiter de celui-ci, des latitudesde celui-la ; la tragedie interdit ce que le roman permet; la chanson tolere ce quel'ode defend, etc. L'auteur de ce livre a le malheur de ne rien comprendre a toutcela; il y cherche des choses et n'y voit que des mots; il lui semble que ce quiest reellement beau et vrai est beau et vrai partout; que ce qui est dramatique dansun roman sera dramatique sur la scene; que ce qui est lyrique dans un couplet seralyrique dans une strophe; qu'enfin et toujours la seule distinction veritable dansles uvres de l'esprit est celle du bon et du mauvais. La pensee est une terre viergeet feconde dont les productions veulent croitre librement, et, pour ainsi dire, auhasard, sans se classer, sans s'aligner en plates-bandes comme les bouquets dans unjardin classique de Le Notre, ou comme les fleurs du langage dans un traite de rhetorique.coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique93

    Mthode readlines().

    descripteur.readline()

    Cette mthode permet d'accder toutes les lignes du fichier (jusqu le fin).Les lignes lues seront retournes comme une liste dobjets.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')y = x.readlines()print y,x.close()coruscant:~/Langages/Python chris% prog.py['On entend tous les jours, a propos de productions litteraires, parler de la dignite\n', 'de tel genre, des convenances de tel autre, des limiter de celui-ci,des latitudes\n', 'de celui-la ; la tragedie interdit ce que le roman permet; la chanson tolere ce que\n', "l'ode defend, etc. L'auteur de ce livre a le malheur de ne rien comprendre a tout\n", "cela; il y cherche des choses et n'y voit que des mots; il lui semble que ce qui\n", 'est reellement beau et vrai est beau et vrai partout; que ce qui est dramatique dans\n', 'un roman sera dramatique surla scene; que ce qui est lyrique dans un couplet sera\n', "lyrique dans une strophe; qu'enfin et toujours la seule distinction veritable dans\n", "les \x9cuvres de l'esprit est celle du bon et du mauvais. La pensee est une terre vierge\n",'et feconde dont les productions veulent croitre librement, et, pour ainsi dire, au\n', "hasard, sans se classer, sans s'aligner en plates-bandes comme les bouquets dans un\n", 'jardin classique de Le Notre, ou comme les fleurs du langage dans un traite de rhetorique.']coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique94

    Un petit apart.

    Dans l'impression que nous venons de faire, la prsentation de la liste estpeu significative. Elle est faite "au kilomtre".Il existe un module qui permet de formater un objet afin d'en afficher lameilleure reprsentation possible. Il s'agit de pprint.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonimport pprintx = open('texte.txt','r')y = x.readlines()print ('Utilisation de pprint.')print pprint.pformat(y)x.close()coruscant:~/Langages/Python chris% prog.pyUtilisation de pprint.['On entend tous les jours, a propos de productions litteraires, parler de la dignite\n', 'de tel genre, des convenances de tel autre, des limiter de celui-ci, des latitudes\n', 'de celui-la ; la tragedie interdit ce que le roman permet; la chanson tolere ce que\n', "l'ode defend, etc. L'auteur de ce livre a le malheur de ne rien comprendre a tout\n", "cela; il y cherche des choses et n'y voit que des mots; il lui semble que ce qui\n", 'est reellement beau et vrai est beau et vrai partout; que ce qui est dramatique dans\n', 'un roman sera dramatique sur la scene; que ce qui est lyrique dans un coupletsera\n', "lyrique dans une strophe; qu'enfin et toujours la seule distinction veritabledans\n", "les \x9cuvres de l'esprit est celle du bon et du mauvais. La pensee est une terre vierge\n", 'et feconde dont les productions veulent croitre librement, et, pour ainsi dire, au\n', "hasard, sans se classer, sans s'aligner en plates-bandes comme les bouquets dans un\n", 'jardin classique de Le Notre, ou comme les fleurs du langage dans un traite de rhetorique.']coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique95

    Mthode seek().

    descripteur.seek(offset,i)

    Cette mthode permet de positionner le pointeur dun fichier pralablement ouvert un endroit quelconque.La valeur i donne la position de rfrence.

    i = 0 : la position est calcule en absolue partir du dbut du fichier .i = 1 : la position est calcule relativement par rapport la position

    actuelle du pointeur de fichier.i = 2 : la position est calcule en absolue partir de la fin du fichier.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')y = x.seek(100,0)print 'Lecture du 100 eme caractere :',x.read(1)y = x.seek(-3,2)print 'Lecture de l\'antepenultieme caractere :',x.read(1)x.close()coruscant:~/Langages/Python chris% prog.pyLecture du 100 eme caractere : eLecture de l'antepenultieme caractere : ucoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique96

    Mthode tell().

    descripteur.tell()

    Cette mthode renvoie un nombre entier qui donne la position du pointeur dans lefichier.Elle est mesure en octets partir du dbut du fichier.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')y = x.seek(100,0)print 'Position du pointeur :',x.tell()y = x.seek(-3,2)print 'Position du pointeur :',x.tell()x.close()coruscant:~/Langages/Python chris% prog.pyPosition du pointeur : 100Position du pointeur : 1016coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique97

    Mthode write().

    descripteur.write(chaine)

    Cette mthode permet d'crire une ligne dans un fichier.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')s = open('sortie.txt','w')y = x.readline()s.write(y)x.close()s.close()coruscant:~/Langages/Python chris% prog.pycoruscant:~/Langages/Python chris cat sortie.txtOn entend tous les jours, a propos de productions litteraires, parler de la dignitecoruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique98

    Mthode writelines().

    descripteur.writelines(liste)

    Cette mthode permet d'crire une liste de lignes dans un fichier.

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')s = open('sortie.txt','w')y = x.readlines()s.writelines(y)x.close()s.close()coruscant:~/Langages/Python chris% prog.pycoruscant:~/Langages/Python chris cat sortie.txtOn entend tous les jours, a propos de productions litteraires, parler de la dignitede tel genre, des convenances de tel autre, des limiter de celui-ci, des latitudesde celui-la ; la tragedie interdit ce que le roman permet; la chanson tolere ce quel'ode defend, etc. L'auteur de ce livre a le malheur de ne rien comprendre a toutcela; il y cherche des choses et n'y voit que des mots; il lui semble que ce quiest reellement beau et vrai est beau et vrai partout; que ce qui est dramatique dansun roman sera dramatique sur la scene; que ce qui est lyrique dans un couplet seralyrique dans une strophe; qu'enfin et toujours la seule distinction veritable dansles uvres de l'esprit est celle du bon et du mauvais. La pensee est une terre viergeet feconde dont les productions veulent croitre librement, et, pour ainsi dire, auhasard, sans se classer, sans s'aligner en plates-bandes comme les bouquets dans unjardin classique de Le Notre, ou comme les fleurs du langage dans un traite de rhetorique.coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique99

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonx = open('texte.txt','r')x.close()x.seek(-3,2)coruscant:~/Langages/Python chris$ fich.pyTraceback (most recent call last): File "./arg11.py", line 7, in ? x.seek(-3,2)ValueError: I/O operation on closed filecoruscant:~/Langages/Python chris$

    Tentative d'accs un fichier qui n'a pas t ouvert au pralable.

    Erreur.

  • C. Aperghis-Tramoni Dpartement dInformatique100

    Sauvegardes.

    Si il ny a aucun problme pour travailler sur les fichier au moyen des chanes decaractre, cest un peu plus dlicat en ce qui concerne les valeurs numriques.

    La mthode read() renvoie systmatiquement une chane qui, pour tre utilise entant que valeur numrique doit tre transforme par la mthode string.atoi().

    Si il ny a donc aucun problme pour les nombres, les choses peuvent devenir trscomplexes lorsquil sagit de sauvegarder des listes, des dictionnaires ou desinstances de classe.

    Python propose un module standard pickle qui permet dautomatiser ce type demanipulation.

    Ce module est capable de prendre nimporte quel objet Python pour le convertir enune chane de caractres.

    Il est mme possible de convertir certaines formes de code. Ce processussappellera pickling alors que le processus inverse sera le unpickling .

    Entre un pickling et un unpickling la chane de caractres aura pu trestocke et rcupre, transmise a une autre machine par tout moyen imaginable(support magntique, mail, transfert de fichier).

  • C. Aperghis-Tramoni Dpartement dInformatique101

    Le module pickle().

    coruscant:~/Langages/Python chris$ cat prog.py#!/usr/bin/pythonimport picklefic=open('sortie.txt','w')jardin={'Tulipes':10,'Jonquilles':25,'Begonias':15,'Iris':50}print '\nEcriture de la donnee :'print jardinprint 'dans le fichier.'print '--------------------------------------------------'pickle.dump(jardin, fic)fic.close()fic=open('sortie.txt','r')print 'lecture de la donnee dans le fichier, resultat : 'parterre = pickle.load(fic)print parterre,'\n'coruscant:~/Langages/Python chris% prog.py

    Ecriture de la donnee :{'Iris': 50, 'Jonquilles': 25, 'Begonias': 15, 'Tulipes': 10}dans le fichier.--------------------------------------------------lecture de la donnee dans le fichier, resultat :{'Iris': 50, 'Jonquilles': 25, 'Begonias': 15, 'Tulipes': 10}

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique102

    Les expressions rgulires.

    La notion d'expression rgulire nous vient de la thorie des langages.C'est un moyen puissant et relativement standardis de rechercher, remplacer et analyserdu texte l'aide de motifs complexes de caractres.Les diverses fonctionnalits vont nous permettre de comparer un motif une chane afin dedterminer si certaines partie de cette chane cible correspondent au motif.

    Le module < re > offre toutes les fonctionnalits permettant le traitement des expressionsrgulires. La fonction "compile" permet la construction d'un objet expression rgulire partird'une chane de motifs et d'options.

    Les diverses mthodes vont chercher les correspondances du motif dans la cible et peuventprocder des modifications ou des substitutions.

    On dispose de mthodes attaches aux objets chane pour effectuer des recherches (index, findet count), des remplacements (replace) et des analyses (split). Elles sont toutefois limites auxcas les plus simples.Les mthodes travaillent sur une chane unique et prdfinie et sont toujours sensibles lacasse.Pour faire une recherche non sensible la casse sur une chane s, il est ncessaire de faireappel s.lower() ou s.upper.Les mthodes replace et split ont les mmes restrictions.C'est pourquoi, chaque fois que le problme augmente en complexit,il est ncessaite d'utiliserles expressions rgulires..

  • C. Aperghis-Tramoni Dpartement dInformatique103

    La syntaxe des expressions rgulires.

    Les caractres alpha-numriques se correspondent eux mme.Les caractres prcds d'un antislash (\) ont une signification particulire.Es caractres de ponctuation se se correspondent eux mme si ils sont prcds d'unantislash (\), ils ont une signification spciale dans le cas contraire.

  • C. Aperghis-Tramoni Dpartement dInformatique104

    Syntaxe des motifs.

    . Correspond n'importe quel caractre except \n.Si DOTALL est positionn, \n est intgr l'ensemble.

    ^ Correspond au dbut rel d'une chane.Si MULTILINE est positionn, chaque \n indique un dbut de chane.

    $ Correspond la fin relle d'une chane.Si MULTILINE est positionn, chaque \n indique une fin de chane..

    * Correspond un facteur multiplicatif de 0 n.L'algorithme multiplicatif est glouton.

    + Correspond un facteur multiplicatif de 1 n.L'algorithme multiplicatif est glouton.

    ? Correspond un facteur multiplicatif 0 ou 1.L'algorithme multiplicatif est glouton.

    *? +? ?? Versions non gloutonnes (avares) des facteurs multiplicatifs vus prcdemment.

    {m, n} Correspond un facteur multiplicatif de m n.L'algorithme multiplicatif est glouton.

    {m, n}? Correspond un facteur multiplicatif de m n.L'algorithme multiplicatif est non glouton..

    [.] Dclaration d'un ensemble de caractres.

  • C. Aperghis-Tramoni Dpartement dInformatique105

    Exemple :

    Cible :

    ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac

    Modle :cttctag

    coruscant:~/Langages/Python chris$ pythonPython 2.3 (#1, Sep 13 2003, 00:49:11)[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> import re>>> sequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac">>> modele = "cttctag">>> patron = re.compile(modele)>>> assort = patron.search(sequence)>>> assort.group(0)'cttctag'>>>coruscant:~/Langages/Python chris$

    Un exemple.

  • C. Aperghis-Tramoni Dpartement dInformatique106

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = "cttctag"patron = re.compile(modele)assort = patron.search(sequence)print 'Chaine trouvee : ', assort.group(0)coruscant:~/Langages/Python exo.pyChaine trouvee : cttctagcoruscant:~/Langages/Python chris$

    Mme chose sous forme de programme.

  • C. Aperghis-Tramoni Dpartement dInformatique107

    Le point (.) peut s'assortir a n'importe quel caractre.Exemple, trouver une chane compose des caractres ttgg suivis de trois caractresquelconques puis termine par un a.

    ttgga

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = "ttgga"patron = re.compile(modele)assort = patron.search(sequence)print 'Chaine trouvee : ', assort.group(0)coruscant:~/Langages/Python chris$ exo.pyChaine trouvee : ttgggcaacoruscant:~/Langages/Python chris$

    Caractres joker.

  • C. Aperghis-Tramoni Dpartement dInformatique108

    Ignorer la casse.

    Lors de la compilation de l'expression rgulire, la modificateur "IGNORECASE"permet de ne pas tenir compte du fait que le caractre est en majuscule ou enminuscule.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport remodele = "oui"patron = re.compile(modele, re.IGNORECASE)while (1) : rep = raw_input ("Repondez oui ou non.") reponse = patron.search(rep) if (`reponse` != "None") : print "Vous avez dit Oui" else : breakcoruscant:~/Langages/Python chris$ exo.pyRepondez oui ou non.OUIVous avez dit OuiRepondez oui ou non.ouiVous avez dit OuiRepondez oui ou non.OuIVous avez dit OuiRepondez oui ou non.Non

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique109

    L'astrisque (*) reprsente un facteur multiplicatif par un nombre compris entre 0 et n.Le plus (+) reprsente un facteur multiplicatif par un nombre compris entre 1 et n.Le point d'interrogation (?) reprsente un facteur multiplicatif par 0 ou 1.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = "ca+.t+"patron = re.compile(modele)assort = patron.search(sequence)print 'Chaine trouvee : ', assort.group(0)print 'Depart de la sequence : ', assort.start()print 'Fin de la sequence : ', assort.end()coruscant:~/Langages/Python chris$ exo.pyChaine trouvee : cagttDepart de la sequence : 13Fin de la sequence : 18coruscant:~/Langages/Python chris$

    Trouver un c, suivi de au moins un a suivi d'un caractre quelconque, suivi de aumoins un t.

    ca+.t+Connatre l'emplacement de la squence dans la chane.

    Facteurs multiplicatifs.

  • C. Aperghis-Tramoni Dpartement dInformatique110

    Simplification d'criture.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"rep = re.search('ca+.t+', sequence)print 'Chaine trouvee : ', rep.group(0)print 'Depart de la sequence : ', rep.start()print 'Fin de la sequence : ', rep.end()coruscant:~/Langages/Python chris$ exo.pyChaine trouvee : cagttDepart de la sequence : 13Fin de la sequence : 18coruscant:~/Langages/Python chris$

    Il existe une criture plus concise pour la recherche d'expressions rgulire.

  • C. Aperghis-Tramoni Dpartement dInformatique111

    Rcupration d'une liste de modles.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = "g+a+"patron = re.compile(modele)liste = patron.findall(sequence)print "Les modeles suivants ont ete trouves :"i = 1for x in liste : print "Modele " + `i` + " : ", x i+=1coruscant:~/Langages/Python chris$ exo.pyLes modles suivants ont ete trouves :Modele 1 : gaaModele 2 : gggaModele 3 : gggaModele 4 : gaaaModele 5 : gaaModele 6 : gaaaModele 7 : ggaModele 8 : gaModele 9 : gaaModele 10 : ggaa

    coruscant:~/Langages/Python chris$

    Lorsqu'un modle est prsent plusieurs emplacements diffrents, on peut tous lesrcuprer par l'intermdiaire d'une liste.

  • C. Aperghis-Tramoni Dpartement dInformatique112

    Sous forme compacte.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"liste = re.findall("g+a+", sequence)print "Les modeles suivants one ete trouves :"i = 1for x in liste : print "Modele " + `i` + " : ", x i+=1coruscant:~/Langages/Python chris$ exo.pyLes modles suivants one ete trouves :Modele 1 : gaaModele 2 : gggaModele 3 : gggaModele 4 : gaaaModele 5 : gaaModele 6 : gaaaModele 7 : ggaModele 8 : gaModele 9 : gaaModele 10 : ggaa

    coruscant:~/Langages/Python chris$

  • C. Aperghis-Tramoni Dpartement dInformatique113

    Un ensemble de caractres entre crochet permet de slectionner un des lments del'ensemble.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = "[at][at][cg][cg]*"patron = re.compile(modele)assort = patron.search(sequence)print 'Chaine trouvee : ', assort.group(0)print 'Depart de la sequence : ', assort.start()print 'Fin de la sequence : ', assort.end()coruscant:~/Langages/Python chris$ exo.pyChaine trouvee : tagDepart de la sequence : 2Fin de la sequence : 5coruscant:~/Langages/Python chris$

    Trouver deux caractres de l'ensemble [AT], suivi de au moins un caractre del'ensemble [cg]

    [at][at][cg]+Connatre l'emplacement de la squence dans la chane.

    Les ensembles.

  • C. Aperghis-Tramoni Dpartement dInformatique114

    {i,j} permet de spcifier un facteur multiplicatif explicite compris dans une fourchette i,j.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = " [at]{3,5}[cg]{2,4} "patron = re.compile(modele)assort = patron.search(sequence)print 'Chaine trouvee : ', assort.group(0)print 'Depart de la sequence : ', assort.start()print 'Fin de la sequence : ', assort.end()coruscant:~/Langages/Python chris$ exo.pyChaine trouvee : tttgggcDepart de la sequence : 42Fin de la sequence : 49coruscant:~/Langages/Python chris$

    Trouver de trois cinq caractres de l'ensemble [AT], suivi de deux quatrecaractres de l'ensemble [cg]

    [at]{3,5}[cg]{2,4}Connatre l'emplacement de la squence dans la chane.

    Les fourchettes explicites.

  • C. Aperghis-Tramoni Dpartement dInformatique115

    Les substitutions.

    coruscant:~/Langages/Python chris$ cat exo.py#!/usr/bin/pythonimport resequence ="ggtagaacagcttcagttgggatcacaggcttctagggatcctttgggcaaaaaagaaacacagaaggcattctttctatacaagaaaggactttatagagctgctaccatgaacggaac"modele = "[at]{3,5}[cg]{2,4}"patron = re.compile(modele)assort = patron.searc