>>> Amphi Python Mardi 29 Janvier 2007 >>> Amphi Python Valentin Roussellet louen@via.ecp.fr François Bleibel bleyblue@via.ecp.fr Pierre-Alexandre Benazet dhorv@via.ecp.fr 2005-12-31
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
pour connaître le type d'un objet : type(a) 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 tuple (1,2,3,”poney”) pour connaître le type d'un objet : type(a)
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) 3%2 donne 1 Puissance 10**3 donne 1000 La priorité des opérateurs mathématiques est respectée
Jouons avec les strings Une chaîne est un texte entre “ “ ou ' ' Retour à la ligne : \n Tabulation : \t Caractères \\, \', \” Insertion d'arguments Conversion de type Exemple : >>>print "Il m'a dit :\n\"bonjour\"" Il m'a dit “bonjour” >>> m=4 >>> a=”joueurs” >>>print "il y a %s %s " %(m,a) il y a 4 joueurs int("3") donne 3
Les listes >>>L=[0,12,42] [0,12,42] >>>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]
Les dictionnaires ...... “ctionnaire !” >>>VIA={"prez":"PBS","cotiz":50} {“prez”:”PBS”,”cotiz”:50} >>>VIA["prez"] ”PBS” >>>VIA["cotiz"] 50 >>>VIA.keys( ) [”cotiz”,”prez”] >>>VIA.values( ) [50,”PBS”] >>>del VIA["prez"] {“cotiz”:50} >>>VIA.clear( ) {} >>>VIA[42]="réponse" {42:”réponse”}
Les structures de contrôle 1. la structure conditionnelle : if , else, elif ,pass Attention aux conditions a==b a!=b a<=b On peut utiliser les opérateurs logiques and ,or, not ex : if a==b or c!=k : On peut utiliser in ex : if n in [1,3,7] : Attention à la syntaxe ! Indentation et deux-points >>> x=0 >>> if x == 0 : print "ce nombre est nul elif x == 'centrale': pass else: print 'inconnu' ce nombre est nul Deux-points ! Indentation !
Les structures de contrôle 2. les boucles FOR >>> Liste=["a","b","c"] >>> for i in Liste: print i a b c >>>range(0,6,2) [0,2,4] >>>range(7) [0,1,2,3,4,5,6] >>> for i in range(7): 1 ... Effectuer une action pour chaque élément d'un ensemble. range(a,b,c) : liste de a à b-1 par pas de c si a>b on obtient la liste vide [] Attention à la syntaxe !
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 ! Attention à la syntaxe ! >>> a=0 >>> while a !=20000 : a+=1 if a > 1000: break else: print a print "fin" >>> while True : pass
Définir une fonction indentation def affiche(i,j): 2 points print i,j 1 2
PAS BIEN !!! 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
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, " "
Entrées au clavier Conversion sous forme de string input Une entrée valable pour Python >>>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 Votre nom "JPRey" >>>print entree JPRey raw_input Conversion sous forme de string >>>entree=input("Votre nom") Votre nom JPRey >>>print entree JPRey
La gestion des fichiers Ouvrir un fichier : la fonction file( ) Récupérer son contenu avec la fonction .read( ) Ecrire dans le fichier avec la fonction .write(“texte” ) Attention : toujours fermer le fichier avec la fonction .close( ) >>>f=file(“C:\toto.txt”,”r”) >>>contenu=f.read( ) >>>print contenu “toto a été têtu” >>>f=file(“C:\toto.txt”,”w”) >>>f.write(“Obi-Wan Kenobi”) >>>f.close()
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
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 -toplevel- open('exrcices','r') IOError: [Errno 2] No such file or directory: 'exrcices'
Remarque: except seul s'applique à toutes les erreurs 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
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" -> "Abc def". def capitalize(s): (...) 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
Retrouvez ces diapositives sur Des questions ? Retrouvez ces diapositives sur http://people.via.ecp.fr/~louen/formations