Initiation à la programmation à l'aide du langage Python http://perso.wanadoo.fr/x.dupre/programmation/langage_python/ - document présentant le langage Python - document regroupant plusieurs exemples implémentés en langage Python (tri, dessin d'une ligne à l'écran, images de synthèse, optimisation, file d'attente) - document regroupant des énoncés de TD - énoncés des TD (en cours) Cours : 9 séances - 5 séances : algorithmes et langages Python - 4 séances : l'informatique au quotidien - dans l'assurance - dans la finance - dans la reconnaissance d'images TD : 9 séances - 8 séances : exercices en langage Python - 1 séances : évaluation Evaluation : - une séance de TD notée au premier semestre - examen au premier semestre - projet au second semestre Examen et séance de TD notée : - proche d'un entretien d'évaluation Projet : - choix d'un sujet parmi une liste de sujets disponibles ou proposition d'un sujet validée par un chargé de TD - réalisation d'un programme informatique (Python ou autre langage) - 4 suivis d'une demi-heure - un rapport - une soutenance orale Utiliser Internet Site de Python : http://www.python.org/doc/2.4.1/ Google : python regex Regular Expression HOWTO - [ Traduire cette page ] (The first edition covered Python's now-obsolete regex module, which won't help you much.) Consider checking it out from your library. ... www.amk.ca/python/howto/regex/ - 80k En cache - Pages similaires Python re Module - Use Regular Expressions with Python - Regex Support - [ Traduire cette page ] Learn how to use regular expressions with Python's re module. www.regular-expressions.info/python.html - 17k - 29 août 2005 - En cache Pages similaires Kodos - The Python Regex Debugger - [ Traduire cette page ] ... regular expressions, develop regular expressions, debug regular expressions, python regex, python re, python gui regex, python gui regular expressions ... kodos.sourceforge.net/ - 4k En cache - Pages similaires FAQ : Frequently Asked Questions http://www.python.org/doc/faq/ 1.1.5 My program is too slow. How do I speed it up? 1.3.2 Why does -22 / 10 return -3? Plan de la séance : 1- algorithme de tri (description, coût) 2- présentation abrégée des variables 3- présentation abrégée des structures du langage (test, boucles) Algorithme : - nombre fini d'étapes - nombre fini d'opérations - nombre fini d'objectifs - fonctionne à chaque fois quelque soit les données pour lesquelles il est conçu Programmation : 3 concepts - séquence - test - boucle = enchaîner les instructions = décider d'exécuter telle ou telle instruction = répéter une séquence d'instructions Tri 2 3 9 8 7 6 5 10 4 1 Imaginer une méthode systématique pour trier ? Tri : 2 étapes - choisir le minimum parmi les éléments restant à trier - le ranger (ou l'ajouter à une liste triée) 9 8 7 6 5 10 1 2 4 3 Nommer les éléments pour les manipuler n3 n1 n2 8 1 2 n8 6 5 n6 10 n7 n10 7 n5 n4 9 4 n9 3 Choisir le plus petit - on décide que n1 est le plus petit parmi ceux qui restent à trier - on regarde n2, si n2 est plus petit, on décide que n2 est le plus petit - ... n3 - manipulation de données n1 n2 8 1 2 n8 6 5 n6 10 n7 n10 7 n5 n4 9 4 n9 3 Ranger l'élément le plus petit - ce n'est plus une méthode : c'est plutôt donner un nom au résultat - mémorisation de données n3 n1 n2 8 1 2 n8 6 5 n6 10 n7 n10 7 n5 n4 9 4 n9 3 Voir poly exemple Notations - les éléments du tableau non trié sont notés : a [0] ... a [9] - les éléments du tableau trié sont notés : b [0] ... b [9] Initialisation - tous les éléments sont dans le tableau a - le tableau b est vide a : 1 4 5 10 6 9 3 2 7 8 b: Chercher l'élément le plus petit a = [ 1, 4, 5, 10, 6, 9, 3, 2, 7, 8 ] nb = len (a) petit = a [0] for i in range (1,nb) : if a [i] < petit : petit = a [i] décalage obligatoire : toute ligne décalée fait partie de la boucle ou du test (indentation) print "petit = ", petit Mémoriser l'élément le plus petit b [0] = petit Choisir le second élément le plus petit ? Chercher l'élément le plus petit parmi ceux qui restent à trier petit2 = None for i in range (0,nb) : if not a [i] in b and (petit2 == None or a [i] < petit2) : petit2 = a [i] Mémoriser l'élément le plus petit b [1] = petit2 Choisir le troisième élément le plus petit et les suivants ? Introduction d'une seconde boucle a = [ 1, 4, 5, 10, 6, 9, 3, 2, 7, 8 ] b = [] while len (b) < len (a) : petit = None for i in range (0,len(a)) : if not a [i] in b and (petit == None or a [i] < petit) : petit = a [i] b.append (petit) Cet algorithme marche-t-il dans tous les cas ? Et si le tableau contient deux fois le même élément ? Programme a = [ 1, 4, 5, 10, 6, 9, 3, 2, 8, 8 ] b = [] while len (b) < len (a) : petit = None for i in range (0,len(a)) : if not a [i] in b and (petit == None or a [i] < petit) : petit = a [i] b.append (petit) print b Résultat [1, 2, 3, 4, 5, 6, 8, 9, 10, None] Adapter l'algorithme ? Programme 2 a = [ 1, 4, 5, 10, 6, 9, 3, 2, 8, 8 ] t = [ False, False, False, False, False, False, False, False, False, False ] b = [] while len (b) < len (a) : petit = None pos = None for i in range (0,len(a)) : if not t [i] and (petit == None or a [i] < petit) : petit = a [i] pos = i t [pos] = True b.append (petit) print b Résultat [1, 2, 3, 4, 5, 6, 8, 8, 9, 10] Coût de l'algorithme = le nombre d'opérations effectuées lors de son exécution exprimé en fonction de la dimension des données Coût de l'algorithme de tri : observations - n nombres à classer - chercher le minimum : un multiple de n O(n) - ranger ce nombre : indépendant de n (on n'en tient pas compte) - on cherche n fois un nombre minimum dans une liste Coût de l'algorithme de tri : résultat final O(n2) Présentation abrégée des variables du langage Python - types non modifiables - rien - booléen - entier - réel - complexe - chaîne de caractères - vecteur None bool int float complex string tuple True 3 3.3 (1.1, 2.2) "exemple" (1, 2.2, "exemple") - type modifiables - liste - dictionnaire list dict [1, 2.2, "exemple"] { 1: "un", 2.2: 4.5} Opérations usuelles avec les nombres = +-*/ += -= *= /= % %= affectation 4 opérations standards opération + affectation modulo modulo + affectation x = 3.3 x + 4.4 x += 4.4 13 % 10 i %= 10 x=x+4 La multiplication est prioritaire sur l'addition. Addition sur les chaînes" de caractères et les t-uples L'addition pour ces deux types est une concaténation. "aze" + "erty" (0,1) + ("e", 3.3) "azeerty" (0, 1, "e", 3.3) Longueur d'une chaîne de caractères ou d'un t-uples len ("azeerty") len ( (0,1, "e", 3.3) ) 7 4 Les éléments d'une chaîne de caractères et d'un t-uple s = "abcdefghijkl" s [i] ième caractère s [i:j] caractères i à j exclu s [i:] careactères i à la fin Caractère non modifiables d'une chaîne de caractères ou d'un t-uple " s = ( 0, 1, "e", 3.3) Il est possible d'écrire : Mais pas : Il faudrait : x s [1] = s [1] =x s = s [0:1] + (x) + s [2:] Listes Les listes sont des tableaux modifiables. l = [ 0, 1.1, "e", (0,1) ] l [1] = 3.3 x = l [2] l.append ("plus") l [i:j] len (l) del l [i:j] l = [] changer le second élément x reçoit le troisième élément "plus" est ajouté en fin de liste désigne la sous liste composée des éléments i à j exclu longueur de la liste supprime les éléments i à j exclu l reçoit une liste vide x in l est vrai si x appartient à la liste l Dictionnaires Dans les listes, les éléments sont indicés par des entiers. Dans les dictionnaires, les éléments sont indicés par ce qu'on veut, ces indices sont appelés clés. Les clés sont des variables de type non modifiables. d ["e"] = 2 l'élément 2 est associé à la clé "e" et ajouté au dictionnaire d l = {} création d'un dictionnaire vide x in d est vrai si la clé x appartient au dictionnaire Les dictionnaires sont utilisés pour faire des recherches. On cherche par exemple des élèves par leur nom de famille. d [“dupre”] = “Xavier” Ce type de variable sera plus étudié en TD. Structures du langage - tests - boucles Les tests et les boucles permettent de modifier le comportement d'un programme en fonction des données qu'il manipule. Test : if elif else if condition : instruction1 instruction2 ... ou if condition : instruction1 instruction2 ... else : instruction3 instruction4 ... ou encore if condition1 : instruction1 instruction2 ... elif condition2 : instruction3 instruction4 ... elif condition3 : instruction5 instruction6 ... else : instruction7 instruction8 ... Boucle : for in, while for variable in ensemble : instruction1 instruction2 ... while condition : instruction1 instruction2 ... ensemble peut-être une liste, un dictionnaire, une chaîne de caractères, un t-uple ou encore range (a,b) = [a, a+1, ..., b-1]