Mardi 29 Janvier 2007 >>> Amphi Python Valentin Roussellet François Bleibel Pierre-Alexandre Benazet 2005-12-31 [email protected] [email protected] [email protected] Your Name Your Title Your Organization (Line #1) Your Organization (Line #2) Formation Python VIA Les types de données Les structures de contrôle. Les fonctions : bien programmer La gestion des fichiers La gestion des erreurs Les modules 2 Les types de données Nombres entiers int 2, -5, 10599, ... Nombres réels float 3.443, -2.999999, ... Booléens bool True, False Listes list [1,3,[42,”a”], -12.5] Dictionnaire dict {“prez”:”PBS”,”un”:1} Chaîne de caractères str "Hello, World" Tuple (1,2,3,”poney”) tuple pour connaître le type d'un objet : type(a) 3 Opérations sur les nombres Affectation x=2 Incrémentation x=2 >>>x += 1 ou x = x + 1 x=3 Division 2/3 => 0 2.0/3 => 0.66666663 Modulo (reste) Puissance 3%2 donne 1 10**3 donne 1000 La priorité des opérateurs mathématiques est respectée 4 Jouons avec les strings Une chaîne est un texte entre “ “ ou ' ' Exemple : >>>print "Il m'a dit :\n\"bonjour\"" Il m'a dit “bonjour” Retour à la ligne : \n Tabulation : \t Caractères \\, \', \” >>> m=4 Insertion d'arguments >>> a=”joueurs” >>>print "il y a %s %s " %(m,a) il y a 4 joueurs Conversion de type int("3") donne 3 5 Les listes >>>L=[0,12,42] >>>L=[1]*3 [0,12,42] [1,1,1] >>> L[1]=2 >>>L[-1]=3 [1,2,1] [1,2,3] >>>L.append(-2) [1,2,3-2] >>>L.insert(1,5) [1,5,2,3,-2] >>>L.reverse( ) [-2,3,2,5,1] >>>L.sort( ) [-2,1,2,3,5] >>>del L[2] [-2,1,3,5] 6 Les dictionnaires ...... “ctionnaire !” >>>VIA={"prez":"PBS","cotiz":50} {“prez”:”PBS”,”cotiz”:50} >>>VIA["prez"] >>>VIA["cotiz"] ”PBS” 50 >>>VIA.keys( ) >>>VIA.values( ) [”cotiz”,”prez”] [50,”PBS”] >>>del VIA["prez"] {“cotiz”:50} >>>VIA.clear( ) {} >>>VIA[42]="réponse" {42:”réponse”} 7 Les structures de contrôle 1. la structure conditionnelle : if , else, elif ,pass >>> x=0 >>> if x == 0 print elif x == pass On peut utiliser les opérateurs else: logiques and ,or, not print ex : if a==b or c!=k : Attention aux conditions a==b a!=b a<=b On peut utiliser in ex : if n in [1,3,7] : Attention à la syntaxe ! Indentation et deux-points Deux-points ! : "ce nombre est nul 'centrale': 'inconnu' ce nombre est nul Indentation ! 8 Les structures de contrôle 2. les boucles FOR Effectuer une action pour chaque élément d'un ensemble. >>> Liste=["a","b","c"] >>> for i in Liste: print i a b c range(a,b,c) : liste de a à b-1 >>>range(0,6,2) par pas de c [0,2,4] >>>range(7) si a>b on obtient la liste vide [] [0,1,2,3,4,5,6] Attention à la syntaxe ! >>> for i in range(7): print i 0 1 ... 9 Les structures de contrôle 3. les boucles WHILE Agir tant qu'une condition est vraie break : sortir de la boucle avant la fin Attention aux boucles infinies ! >>> a=0 >>> while a !=20000 : a+=1 if a > 1000: break else: print a print "fin" >>> while True : pass Attention à la syntaxe ! 10 Définir une fonction def affiche(i,j): print i,j 2 points indentation >>>affiche(1,2) 1 2 11 Bien programmer ... ou pas ! def f(d,f): for k in range(d,f): s=1 for j in range(2,(k/2)+1): if k%j==0: s=j+s if s==k: print k, " " PAS BIEN !!! – Noms de variables incompréhensibles – On ne sait pas ce que fait la fonction 12 Bien programmer ... =) def nombre_parfait(debut,fin): """recherche de nombres parfaits arguments: debut borne inférieure fin borne supérieure résultat: liste des nombres parfaits entre début et fin """ for test in range(debut,fin): #On parcourt tous les nombres de l'intervalle somme=1 for diviseur in range(2,(test/2)+1): if test%diviseur==0: somme+=diviseur if somme==test: print test, " " 13 Entrées au clavier input raw_input Une entrée valable pour Python Conversion sous forme de string >>>entree=input("Votre nom") Votre nom JPRey >>>entree=input("Votre nom") Votre nom JPRey Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> entree=input("Votre Nom") File "<string>", line 1, in <module> NameError: name 'JPRey' is not defined >>>print entree JPRey >>>entree=input("Votre nom") Votre nom "JPRey" >>>print entree JPRey 14 La gestion des fichiers Ouvrir un fichier : la fonction file( ) >>>f=file(“C:\toto.txt”,”r”) Récupérer son contenu >>>contenu=f.read( ) >>>print contenu “toto a été têtu” avec la fonction .read( ) Ecrire dans le fichier avec la fonction .write(“texte” ) >>>f=file(“C:\toto.txt”,”w”) >>>f.write(“Obi-Wan Kenobi”) Attention : toujours fermer le fichier >>>f.close() avec la fonction .close( ) 15 La gestion des erreurs Une erreur : quelque chose que python ne comprend pas Il existe plusieurs types d'erreurs ZeroDivisionErrror TypeError ValueError ArithmeticError IOError Ce qu'on veut : filtrer les erreurs pour que le programme continue de fonctionner en cas d'erreur 16 La gestion des erreurs Un exemple sans filtrage d'erreur filename = raw_input("Veuillez entrer un nom de fichier: ") f = open(filename,"r") >>> Veuillez entrer un nom de fichier: exrcices Traceback (most recent call last): File "<pyshell#11>", line 1, in -toplevelopen('exrcices','r') IOError: [Errno 2] No such file or directory: 'exrcices' >>> 17 La gestion des erreurs Une solution : l'instruction try ... except filename = raw_input("Veuillez entrer un nom de fichier: ") try: f = open(filename,"r") except IOError: print "Le fichier ", filename, "est introuvable" >>> Veuillez entrer un nom de fichier: exrcices Le fichier exrcices est introuvable Remarque: except seul s'applique à toutes les erreurs 18 Les modules Un module est un fichier .py contenant des fonctions et des constantes Exemple: dans string.py: # Capitalize a string, e.g. "aBc def capitalize(s): (...) dEf" -> "Abc def". Exemple: le module math Comment utiliser un module ? Importer le module import math Utiliser une fonction du module importé y = math.sin(x) Ou importer toutes les fonctions du module pour les utiliser dans le code: from math import * y = sin(x) t = cos(x) Ou seulement certaines fonctions: from math import sin, cos 19 Des questions ? Retrouvez ces diapositives sur http://people.via.ecp.fr/~louen/formations 20