Amphi de rattrapage python 20/10/2005 Nom et mail des participants Vincent: vincent.maury@student.ecp.fr ; Marc: gille_marc@hotmail.fr ; M4uD!T : remy.ritchen@student.ecp.fr
Les types de variables Les variables booléennes : Nombres : Listes Dictionnaires Chaînes de caractères Tuples True, False entiers, entiers longs, flottants, complexes L = [12, "a", 19, 0.5] D = {cles:valeur, 'HEC':'ENC..'} Cc = "bonjour" T = ("a", 12, 0.5) >>>L[0] 12 >>>D[cles],D['HEC'] (valeur, 'ENC..') >>>len(d),len(l) (2,4) >>>'HEC' in D True
Opérations sur les nombres Affectation x =12 Incrémentation >>> x=2 >>> x += 1 ou x = x + 1 => x=3 Division >>> 7//3 => 2 (division entière) >>> 7.0/3 => 2,333333333 (il faut un nombre flottant) >>> 7%3 => 1 (modulo = reste de la division entière) >>> divmod(7,3) => (2,1) Puissance >>>10**4 => 10000 La priorité des opérateurs mathématiques est respectée >>>2*3+1 => 7
Les Les chaînes chaînes de de caractères caractères Les chaînes de caractères sont entre ' ' ou " " Retour à la ligne : \n Tabulation : \t Caractère spéciaux :\', \", \\ Insertion d'argument : %s Fonction int() Transforme une chaîne de caractère (ou un nombre) en un nombre entier Exemple : >>> print "Il m'a dit :\n\"bonjour\"" Il m'a dit : "bonjour" >>> m=4 >>> print "Il y a %s erreurs" %m Il y a 4 erreurs Fonction float() Transforme une chaîne de caractère (ou un nombre) en un nombre flottant
Outils pour les listes >>>L >>>L=2*[0] >>>L.append(-2) >>>L.sort() >>>L.reverse() >>>L.insert(1,45) >>>L[0]=6 [0,0] [0,0,-2] [-2,0,0] [0,0,-2] [2,45,0,-2] [6,45,0,-2]
Outils pour les dictionnaires >>>F={'demain':'mercredi'} >>>D={1:'vrai',0:'faux'} >>>del D[1] >>>D.update(F) >>>D.clear() >>>D[1]='vrai' >>>D {1:'vrai',0:'faux'} {0:'faux'} {0:'faux','demain':'mercredi'} {} {1:'vrai'} >>>D.keys() >>>D. values() [1] ['vrai']
Les structures de contrôle (1) Structure condition : if Éléments : if, elif, else Fonction propre : pass Conditions : ==,!=, <, >, <=, >=, is, is not, and, or Attention à la syntaxe!! Attention!! Indentation Exemple : >>>x=0 >>>if x == 0 : print "ce nombre est nul" elif x == 'centrale': pass else: print 'inconnu' Attention!! deux-points Attention!! deux-points ce nombre est nul
'C'est pas fini' Les structures de contrôle (2) Boucle for Éléments : for, range, break, continue range(a,b,c) : de a à (b-1) par pas de c <=> [a,a+c,..b-1] si a > b => [] Attention à la syntaxe!! Exemple : >>>a=0 >>>for i in range(10): a=a+i print a 45 >>>L=[8,5,14,84] >>>for i in L: if i is 5: break else : print "C'est pas fini"
Les structures de contrôle (3) Boucle while Éléments : while, condition, break La boucle s'exécute tant que la condition est remplie Attention aux boucles infinies => plantage assuré Attention à la syntaxe!! Exemple : >>>i=0 >>>while i!=20000: if i > 1000: break else: print i i=i+1 print "fin"
Un exemple de fonction 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, " " On ne programme pas de cette manière -Illisible -Incompréhensible -Risque d'erreurs important
Un BON exemple de fonction def nombre_parfait(debut,fin): '''''' recherche de nombres parfait arguments: debut borne inférieure fin borne supérieure résultat: liste des nombres parfaits entre début et fin ''''''' DocSrting : documentation du programme 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, " " Indentation Deux points Commentaire
Entrées clavier entree=input('votre nom ') L'entrée doit être valide pour Python >>>entree=input('votre nom: ') votre nom: Marc Traceback (most recent call last): input('votre nom') File "<string>", line 0, in? NameError: name 'Marc' is not defined >>>entree=input('votre nom') votre nom 'Marc' entree=raw_input('votre nom ') Transformation de l'entrée en chaîne de caractères automatiquement >>>entree=raw_input('votre nom: ') votre nom: Marc >>>print entree 'Marc' >>>print entree 'Marc'
Gestion des erreurs Erreur: Instruction que python ne peut exécuter ou ne comprend pas. Il existe différents types d'erreur: ArithmeticError TypeError ValueError IOError NameError Structure de contrôle des erreurs : try: Instruction à essayer except (type d'erreur): Instruction E Si ça Loose else: Instruction M Si ça Marche
Gestion des erreurs (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' >>>
Gestion des erreurs (exemple) 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
Objets non mutables >>>x=3 x 3 x y >>>y=x 3 3 x y >>>y=4 3 4
Objets mutables >>>L=[0,1,2] L [0,1,2] >>>M=L L M [0,1,2] L M >>>M[1] =0 L M [0,1,2] [0,0,2] 0
Objets mutables (suite) >>>L=[10, "a",5.7] >>>M=L[:] >>>M [10,"a",5.7] >>>M[0]=5 >>>L [10, "a",5.7] >>>M [5, "a",5.7] M=L[:] et M=L donne des résultats très différents Pour faire une copie d'un dictionnaire utiliser: E=D.copy()
Les modules Un module permet de charger des fonctions supplémentaires qui seront utilisées par le programme méthode pour utiliser une fonction issue d'un module: >>>import module >>>module.fonction(arg1,arg2,...) >>>dir(module) è liste des fonctions du module >>>from module import fonction >>>fonction(arg1,arg2,...)
Les modules (exemples) math: sinus, cosinus, tangentes,... os (operating system): gestion des fichiers os.path : opérations diverses sur les chemins d'accès aux fichiers time : datation, défilement du temps, pauses Exemple d'utilisation : >>>import math >>>import os.path >>>math.cos(2) >>> os.path.exists('mercivia') -0.41614683654714241 >>>True
Traitement des fichiers L'essentiel: Fonction open(): Fonction.readline(): fichier = open("accès_fichier", "r") #lecture # "r" peut être remplacé par "w" pour écriture fichier.readline() #lit la première ligne fichier.readline() #lit la ligne suivante Fonction.write(): fichier.write() #écrit pour un fichier ouvert en "w" Fonction file(): Fonction.close(): for ligne in file("accès_fichier", "r") print ligne # imprime les lignes du fichier fichier.close() # ferme l'accès au fichier
Des questions? http://www.via.ecp.fr/formations/themes/index.html N'hésitez pas à consulter l'aide de Python, surtout la librairie des fonctions
Annexe: exemple de fonction pour traiter un fichier def recupere_donnee(): """ cette fonction permet de récupérer les données d'un fichier il n'y a pas d'argument le resultat est une liste: ["ligne1","ligne2",...] sans les sauts de lignes """ adresse = raw_input("indiquez l'adresse du fichier: ") # récupération de l'adresse par le clavier resultat =[] fichier = file(adresse, "r") # on "ouvre" le fichier for ligne in fichier: if ligne[ 1:]=="\n": # boucle de parcours des lignes du fichier # test pour enlever le saut de ligne # \n est considère comme un caractère, ie une chaîne de longueur 1!! resultat += [ligne[: 1]] else: resultat += [ligne] return resultat