PISCINE Python ESA 2020 http www piscinepython fr

  • Slides: 57
Download presentation
PISCINE Python ESA 2020 http: //www. piscine-python. fr 1

PISCINE Python ESA 2020 http: //www. piscine-python. fr 1

Les projets Application Application Milieu Equestre Tourisme des Jeux Monde Automobile Domotique et maison

Les projets Application Application Milieu Equestre Tourisme des Jeux Monde Automobile Domotique et maison intelligente Valorisation commerciale dans différentes domaines Difficultés techniques des informaticiens et du monde de l’informatique 2

Plan � Introduction ◦ Domaines d’application ◦ Forces et faiblesses � Types de données

Plan � Introduction ◦ Domaines d’application ◦ Forces et faiblesses � Types de données standard Types numériques ◦ Séquences ◦ Chaines de caractères (exo) ◦ � Entrées sorties ◦ stdin/stout ◦ Fichiers � � Script et langage python ◦Quelques remarques utiles ◦Modules et packages ◦Importer Classes � Commandes systèmes et modules utiles � ◦ Module os ◦ Module re ◦ Module sys Structures de contrôle ◦ if/else ◦ for/while/do � Les fonctions � Gestion des exceptions � Autres types de données ◦ N-uplets et listes Dictionnaires ◦ sets (ou ensemble) � Notions d’interfaces graphiques Ø Forces et faiblesses 3

Introduction Langage dynamiquement interprété Développé et maintenu depuis 1989 par Guido Van Rossum Open

Introduction Langage dynamiquement interprété Développé et maintenu depuis 1989 par Guido Van Rossum Open source pour interpréteur et bibliothèque standard Orienté objet/Ramasse miettes/Facile d’utilisation (d’appréhension)/souplesse Système de gestion d’exceptions Nombreux types d’utilisation/bibliothèque spécialisées 4

Introduction Domaines d’application Administration système Applications Web Extension ou scriptage de C++/C(c. Python)/Java(Jy. Thon)/Net(Iron.

Introduction Domaines d’application Administration système Applications Web Extension ou scriptage de C++/C(c. Python)/Java(Jy. Thon)/Net(Iron. Python) Interfaces graphiques : usage interactif Remplacement environnements calcul (Matlab, IDL, …) Meilleur nulle part, Excellent partout 5

Introduction Forces et faiblesses de Python � Forces : ◦ Langage de script ◦

Introduction Forces et faiblesses de Python � Forces : ◦ Langage de script ◦ Clarté, compacité, portabilité (multiplateforme, moins de maintenance, 5 à 10 fois moins de ligne de code que C/C++/Fortran/…) ◦ Vitesse de développement ◦ Erreurs facilement repérables : pas de pointeurs, pile d’appel des fonctions ◦ Grande communauté � Faiblesses ◦ Lenteur à l’exécution ◦ Peu d’optimisation de la part de l’interpréteur ◦ Addiction très facile 6

Propagande • • • You. Tube. com est écrit en Python est un des

Propagande • • • You. Tube. com est écrit en Python est un des 3 langages officiels chez Google (avec Java et C++) Django est capable de rivaliser avec Ro. R Forte communauté, en particulier sous Linux, de nombreuses librairies, souvent de bons niveaux Utilisé pour les jeux, le calcul numérique, le dév. Web, la prog. système, … 7

Exécuter du Python

Exécuter du Python

Exécuter du Python avec un IDE Py. Charm IDE : environnement de développement intégré

Exécuter du Python avec un IDE Py. Charm IDE : environnement de développement intégré 1 Création du projet 3 Exécution 2 Fichier. py

Script et langage Python Introduction � Peu de ponctuation � Pas de point virgule

Script et langage Python Introduction � Peu de ponctuation � Pas de point virgule "; " à la ligne � Tabulations/4 espaces significatifs écrire un joli code : if toto==1: if ($toto==1) then { print ”coucou”; result=2; } else {result=3; } print ”coucou” result=2 else : result=3 ◦ Une instruction par ligne ◦ # pour commenter jusqu’à la fin de la ligne ◦ Pour sortir de python : Ctrl+d 10

Structures de contrôle Tests (if, elif et else) Boucles (for, while) Gestions d’exceptions (do,

Structures de contrôle Tests (if, elif et else) Boucles (for, while) Gestions d’exceptions (do, until) 11

Tests : if, else � Tester une valeur : if a==1 : print "a

Tests : if, else � Tester une valeur : if a==1 : print "a est bien egal a 1" else: print "a est egal a ", a � Les a Structures de contrôle if a==1 : print "a est bien egal a 1" elif a==2 : print "a est bien egal a 2" else: print "a est egal a ", a blocs sont exécutés en fonction de la valeur de � if est la condition, elif une(des) alternative(s) et else si aucune condition précédente n’est respectée � pas d‘instruction de type switch 12

Types de données standards Types de données standard � Basiques ◦ Booléens (True ou

Types de données standards Types de données standard � Basiques ◦ Booléens (True ou False) ◦ Numériques ◦ Chaines de caractères � Autres ◦ Séquences ◦ ◦ (tuple, listes, en plus des chaînes de caractères) Dictionnaires Ensembles (sets) Fonctions et méthodes Classes Pour connaître le type d'une variable v : type(v) 13

Types de données standards Types et opérations numériques int (entier long par défaut) :

Types de données standards Types et opérations numériques int (entier long par défaut) : 3, 4… ( taille max définie par la variable [-sys. maxint -1, sys. maxint]) long, entier long (précision illimitée) float, flottant (basé sur double c++) : 3. 13 e 10, 0. 12 complex, nombres complexes : 3. 2+2. 5 j Opération Résultat pow(x, y) x puissance y c. conjugate() Le conjugué de c (si c ℂ) divmod(x, y) float(x) long(x) int(x) str(x) La paire (x//x, x%y) age= str(“ 3”) print (age) Conversion de x en flottant Conversion de x en entier long Conversion de x en entier Conversion de x en chaîne de caractère 14

Types de données standards Opérations numériques Opération Résultat abs(x) Norme de x x%y Reste

Types de données standards Opérations numériques Opération Résultat abs(x) Norme de x x%y Reste de la division entière de x par y -x x/y x // y x*y x–y x+y x ** y Opposé de x Division de x par y Division entière de x par y Produit de x et y Différence de x et y Somme de x et y x puissance y 15

Script et langage Python Quelques remarques utiles (II) principalement créé avec =, def et

Script et langage Python Quelques remarques utiles (II) principalement créé avec =, def et class � Identifiants doivent commencer par une lettre ou un "_" et peuvent contenir lettre, chiffres et le caractère "_" � Noms de fichiers doivent être construits comme des identifiants pour pouvoir être importés � Identifiant

Entrées-sorties Entrées/sorties print et saisie clavier ◦ print est le mot clef Pas appel

Entrées-sorties Entrées/sorties print et saisie clavier ◦ print est le mot clef Pas appel de fonction Affiche les arguments (séparés par des virgules) sur la sortie standard Termine automatiquement par un saut de ligne (sauf si le dernier caractère est , ) Arguments convertis en chaine de caractères avec str() ◦ input est fonction de base de l’interpréteur Python 3 Interrompt exécution du programme et attend une entrée Valeur renvoyée par la fonction sous forme de chaine de caractères raw_input() en Python 2 équivaut à input() en Python 3 age = input("quel age as tu ? ") print (age) print (“ton age est “+age) print “ton age est %s”, %(age) 17

Structures de contrôle Boucles � for : itération sur valeurs d’une séquence définie ou

Structures de contrôle Boucles � for : itération sur valeurs d’une séquence définie ou à définir >>range(4) [0, 1, 2, 3] �for i in range(j, k): (de j à k-1) �for valeurs in list: (boucle sur valeurs de la liste) �for keys in dict: (boucle sur clefs du dictionnaire) � while : itération tant que condition vérifiée >>range(3, 7) [3, 4, 5, 6] >>range(7, 4, -1) [7, 6, 5] �while test: �#corps de la boucle � break permet de sortir de la boucle � continue permet de passer à l’itération suivante � Pas de do ou until : while true: #corps de la boucle If condition_sortie break 18

Formatage Types de données standards : les chaines de caractères Les nombres aussi se

Formatage Types de données standards : les chaines de caractères Les nombres aussi se formatent, ce qui est utile pour le nombre de chiffres significatifs. Ceci est de la forme [flag][taille][. presision] ex : >>> print "val = %8. 4 f" %5. 787767 val = 5. 7878 Flag Signification 0 Chaine remplie de 0 à gauche ⊔ Mettre un espace devant les nombres positifs + # Mettre un ‘+’ devant les nombres positifs Utiliser le format python pour notations hexadécimales et octales 19

Types de données standards : les chaines de caractères Formatage des chaines Il est

Types de données standards : les chaines de caractères Formatage des chaines Il est possible de créer une chaine en formatant son contenu avec l’opérateur % ◦ équivalent à printf de C ◦ print "Les chaines à formater sont %s et %s" %(val 1, val 2) Les chaines à formater sont introduites par le caractère % suivie du type de variable Format Signification %% Le caractère ‘%’ %s Chaîne %c Caractère %f Flottant %e Flottant (notation expo) %d Entier décimal %x Entier hexadécimal %o Entier octal 20

Modules et packages Script et langage Python Il existe deux modes de déclarations d'objets

Modules et packages Script et langage Python Il existe deux modes de déclarations d'objets python (variable, classes, fonctions, …) � un module est un fichier ayant une extension de type . py qui regroupe des déclarations d'objets (existe également sous forme de librairie dynamique ) package est un répertoire dans lequel est défini un fichier __init. py__ regroupant un ensemble de modules ou de sous-packages � un (organisation en sous-répertoires possible) La localisation des modules et des packages est définie par la variable d'environnement PYTHONPATH 21

Les modules en python Script et langage Python Voici une liste de modules de

Les modules en python Script et langage Python Voici une liste de modules de base que vous serez amené un jour ou l'autre à utiliser. random : fonctions permettant de travailler avec des valeurs aléatoires math : toutes les fonctions utiles pour les opérations mathématiques (cosinus, exp, etc. ) sys : fonctions systèmes os : fonctions permettant d'interagir avec le système d'exploitation time : fonctions permettant de travailler avec le temps calendar : fonctions de calendrier profile : fonctions permettant d'analyser l'execution des fonctions urllib 2 : fonctions permettant de récupérer des informations sur internet re : fonctions permettant de travailler sur des expressions régulière 22

Séquences � 2 Types de données standards : les séquences familles : ◦ Non

Séquences � 2 Types de données standards : les séquences familles : ◦ Non modifiables : �Chaines de caractères �N-uplets (tuples) on ne peut pas modifier le contenu d'une chaine ou d'un n-uplet en accédant à un élément par son indice ◦ Modifiables : listes � Indexation ◦ ◦ ◦ a=‘tapis’ a[0]=t ⇒ séquences avec indice 1 er 0 a[-1]=s ⇒ -1 dernier élément de la série a[2: 4]=pi ⇒ tranche i, j commence au ième fini au kème-1 Copie d’une chaine ou séquence avec [: ] Séquence en pas : a[début: fin: pas] 23

Types de données standards : les séquences Opérations sur les séquences modifiables et non

Types de données standards : les séquences Opérations sur les séquences modifiables et non modifiables Opération Résultat x in s True si x ∈ s, False sinon s+t Concaténation de s et t x not in s s * n ou n * s s[i] s[i: j] len(s) min(s) max(s) True si x ∉ s, False sinon Concaténation de s, n fois ième élément de s Tranche entre i et j dans s Longueur de s Plus petit élément de s Plus grand élément de s 24

Types de données standards : les chaines de caractères Chaînes de caractères � Séquences

Types de données standards : les chaines de caractères Chaînes de caractères � Séquences non modifiables � Délimitation par des apostrophes, guillemets simples ou triples : ◦ ‘formation ”python”’ ◦ ”L’objectif” ◦ ”””L’objectif de cette formation ”python” est…””” � Caractères spéciaux : n, t, b � Triples guillemets permettent le retour à la ligne dans les chaines : documentation de code Opération Résultat c in s True si caractère c est dans s <, >, ==, != Comparaisons alphanumériques zip(a, b) Colle chaines a et b unicode : u'blabla' rawstring : r'blabla' 25

Types de données standards : les chaines de caractères Méthodes chaines de caractères On

Types de données standards : les chaines de caractères Méthodes chaines de caractères On peut classer les méthodes en plusieurs catégories : ◦ ◦ ◦ Gestion des espaces Gestion des majuscules et minuscules Test de la nature d’une chaine Recherche et remplacement Découpage et collage de chaînes Formatage Une nouvelle chaine est créée et renvoyée par les méthodes L'appel à une méthode ne modifie pas la chaine en elle-même 26

Types de données standards : les chaines de caractères Gestion des espaces Méthode Effet

Types de données standards : les chaines de caractères Gestion des espaces Méthode Effet strip() Supprime les espaces en début et fin de chaine rstrip() lstrip() rjust() Supprime les espaces en fin de chaine Supprime les espaces en début de chaine Justifie le texte à droite pour la largeur demandée ljust(width) Justifie le texte à gauche pour la largeur demandée center(width) Centre le texte pour la largeur demandée isspace() Renvoie True s’il n’y a que des espaces expandtabs(tabsize) Remplace les tabulations par des espaces 27

Types de données standards : les chaines de caractères Gestion des majuscules et des

Types de données standards : les chaines de caractères Gestion des majuscules et des minuscules Méthode Effet upper() Remplace les minuscules par des majuscules lower() Remplace les majuscules par des minuscules capitalize() Passe la 1ère lettre de la chaine en majuscule et les autres en minuscules title() Formate comme un titre (1ère lettre de chaque mot en majuscule, les suivantes en minuscules) swapcase() Inverse les majuscules et minuscules 28

Types de données standards : les chaines de caractères Tests sur la nature de

Types de données standards : les chaines de caractères Tests sur la nature de la chaîne Méthode Effet startswith(prefix) True si la chaine commence par prefix isupper() True si la chaine ne contient que des majuscules endswith(prefix) islower() istitle() isdigit() True si la chaine se termine par prefix True si la chaine ne contient que des minuscules True si la chaine est formatée comme un titre True si la chaine ne contient que des caractères numériques isalpha() True si la chaine ne contient que des caractères isalnum() True si la chaine ne contient que des caractères alphabétiques alphanumériques 29

Types de données standards : les chaines de caractères Recherche et remplacement Méthode Effet

Types de données standards : les chaines de caractères Recherche et remplacement Méthode Effet index(sub) Renvoie l’index de la 1ère occurrence de la chaine sub, exception si pas trouvée rindex() Idem pour la dernière occurrence find(sub) Comme index mais renvoie -1 si la chaine n’est pas trouvée rfind() Idem pour la dernière occurrence count(sub) Retourne le nbr d’occurrence de la sous-chaine replace(old, new [, max]) Remplace la sous-chaine old par new, au plus max fois (par défaut, remplace toutes les occurrences) translate(table [, deletechars]) Supprime les caractères figurant dans deletechar et remplace tous les autres par leur correspondance dans table 30

Types de données standards : les chaines de caractères Découpage et collage Méthode Effet

Types de données standards : les chaines de caractères Découpage et collage Méthode Effet split([sep[, max]) Crée une liste de chaine en découpant la chaîne suivant sep au plus max fois. Par défaut split utilise les espaces, tabulations les sauts de ligne comme séparateur splitlines([keepend]) Crée une liste en découpant la chaine suivant les sauts de lignes. Ces sauts de ligne sont conservés si keepend est True join(list) Concatène tous les éléments de list en utilisant la chaine comme jointure. Tous les éléments de la liste doivent être des chaines de caractères. 31

Types de données standards : N-uplets et listes N-uplets (tuples), listes � Tuples sont

Types de données standards : N-uplets et listes N-uplets (tuples), listes � Tuples sont des séquences non modifiables, entre parenthèses ou suite de valeurs séparées par des virgules : ◦ ◦ (a, b, c) 1, 2 (1, ) : seul manière de définir un tuple à un seul élément (1, ["k 7", 1, -0. 7], 4. 5, "z") � Listes sont des séquences modifiables, entre [] : ◦ [a, (1, 2), ”Python”] ◦ [(3, ), (5, ), ] : possibilité de mettre une virgule après dernier élément 32

Types de données standards : N-uplets et listes Opérations sur les listes Opération Résultat

Types de données standards : N-uplets et listes Opérations sur les listes Opération Résultat len(x) Taille de la séquence x s[i]=x Affecte la valeur x au ième élément de s del s[i] Supprime le ième élément de s s[i: j]=t Remplace la tranche i: j par la séquence t del s[i: j] Supprime la tranche i: j de s s += t Ajoute le contenu de t à la fin de s u=s+t Renvoie une nouvelle liste u dont le contenu est la concaténation de s et de t 33

Types de données standards : N-uplets et listes Méthodes listes Méthode Résultat append(x) Ajoute

Types de données standards : N-uplets et listes Méthodes listes Méthode Résultat append(x) Ajoute x en fin de liste pop(i) Retourne et supprime l’élément d’index i ou le dernier si i non précisé insert(i, x) Ajoute x à l’index i remove(x) Supprime le 1 er élément de valeur x index(x) Retourne l’index du 1 er élément de valeur x count(x) reverse() sort([func]) Retourne le nombre d’occurrences de x Renverse la liste Trie la liste. Une fonction de comparaison peut être donnée 34

Structures de contrôle Remarques sur boucle for Boucle sur les éléments d'une liste: liste=[("janv",

Structures de contrôle Remarques sur boucle for Boucle sur les éléments d'une liste: liste=[("janv", 31), ("fev", 28), ("mars", 30), …] for mois, n. Jour in liste: … mois est le premier élément de chaque n-uplet n. Jour est le second élément de chaque n-uplet liste=["janv", "fev", "mars", …] for i, mois in enumerate(liste): … i est l'indice de l'élément mois est la valeur de l'élément 35

Types de données standards : N-uplets et listes Opérateur de copie Si vous copiez

Types de données standards : N-uplets et listes Opérateur de copie Si vous copiez une liste dans une autre avec l'opérateur '=', les deux listes pointent sur la même zone mémoire Toute modification faite sur l'une des listes impacte l'autre Pour copier une liste : lnew= linit[: ] 36

Types de données standards : les dictionnaires Les dictionnaires Fonctionnent par correspondance clef /

Types de données standards : les dictionnaires Les dictionnaires Fonctionnent par correspondance clef / valeur Un dictionnaire est représenté avec des accolades, sous la forme suivante {1: ’Formation’, 2: ’Python’, 3: ’Lapp’} (clefs : 1, 2, 3 ; valeurs : ‘Formation', 'Python', ’Lapp' ) Les clefs peuvent être de type numérique, chaine de caractères ou N-uplets, mais pas de type dictionnaire ou liste Les valeurs sont de type quelconque On peut faire une liste de dictionnaires L’ordre des éléments n’est pas conservé en manipulant les dictionnaires Opération Résultat len(a) Nombre de valeurs dans a a[k] Valeur de la clef k a[k] = v Assigne la valeur v à la clef k del a[k] Supprime la valeur a[k] de a k in a True si existe valeur associée à la clef k k not in a True si aucune valeur associée à la clef k 37

Types de données standards : les dictionnaires Méthodes dictionnaires Méthode Effet keys() Renvoie la

Types de données standards : les dictionnaires Méthodes dictionnaires Méthode Effet keys() Renvoie la liste des clefs du dictionnaires values() Renvoie la liste des valeurs du dictionnaires items() Renvoie la liste des couples (clefs: valeur) du dictionnaires has_key() Vrai si existe valeur associée à la clef k clear() Vide le dictionnaire get(k[, default]) copy() update(dict) Retourne la valeur associée à la clef k ou default si pas de valeur Retourne une copie de surface du dictionnaire Met à jour le dictionnaire à partir d’un autre dictionnaire 38

Types de données standards : les chaines de caractères Substitution de données Les valeurs

Types de données standards : les chaines de caractères Substitution de données Les valeurs à formater peuvent être introduite dans la chaine avec la syntaxe %(nom) format Le nom fait référence à la valeur d’un dictionnaire associé à la clef nom Ceci est utile quand on a à changer plusieurs fois un nom par des valeurs différentes >>> a = "Le %(legume)s est un %(variete)s " >>> valeurs = {'legume': 'poireau', 'variete': 'allium'} >>> print a % valeurs Le poireau est un allium. >>> valeurs. II = {'legume': 'concombre', 'variete': 'cucurbitacee} >>> print a % valeurs. II Le concombre est un cucurbitacee. 39

Types de données standards : les dictionnaires Opérateur de copie Si vous copiez un

Types de données standards : les dictionnaires Opérateur de copie Si vous copiez un dictionnaire dans un autre avec l'opérateur '=', les deux dictionnaires pointent sur la même zone mémoire Toute modification faite sur l'un des dictionnaires impacte l'autre Pour copier une liste : dnew= {} dnew. update(dinit) 40

Types de données standard : les sets Ensemble (set) � Avant python 2. 4

Types de données standard : les sets Ensemble (set) � Avant python 2. 4 : >>> import sets >>> b=sets. Set(…. ) � Un set est une collection non ordonnée d’objets sans doublon � Le module sets existe avec les deux classes suivantes : ◦ set (modifiable) ◦ et imutable. Set (non modifiable) � Un ensemble peut être créé à partir d’une liste, d’un dictionnaire, d’une chaine ou un tuple. Si des doublons éventuels existent, ils seront alors absents de l’ensemble � Ex : >>> a="seed" >>> b=set(a) >>> print b set(['s', 'e', 'd']) 41

Types de données standard : les sets Méthodes ensembles Méthode Effet add(elt) Ajoute un

Types de données standard : les sets Méthodes ensembles Méthode Effet add(elt) Ajoute un élément à l’ensemble remove(elt) Retire un élément de l’ensemble pop() Retire un élément au hasard de l’ensemble et le renvoie union(s) Renvoie l’union de l’ensemble original et de s intersection(s) Renvoie l’intersection de l’ensemble original et de s difference(s) Renvoie la différence entre l’ensemble original et s issubset(s) Renvoie True si l’ensemble original est un sous ensemble de s, False sinon issuperset(s) Renvoie True si l’ensemble original contient, False sinon s = s 1. union(s 2) s = s 1 + s 2 s 1. update(s 2) s 1 |= s 2 s = s 1. intersection(s 2) s = s 1 & s 2 S 1. intersection_update(s 2) s 1 &= s 2 s = s 1. difference(s 2) s = s 1 - s 2 s 1. difference_update(s 2) s 1 -= s 2 42

Structures de contrôle Compréhensions de liste Syntaxe concise de construction et lisibilité Nouvel objet

Structures de contrôle Compréhensions de liste Syntaxe concise de construction et lisibilité Nouvel objet peut être créé (conseillé) Simplification des boucles for produisant liste Exemples : Une liste >>> liste = [1, 3, 5] >>> [3*x for x in liste] [3, 9, 15] >>> [3*x for x in liste if x >2] [6, 15] >>> [3*x for x in liste if x<1] [] Deux listes >>> liste 1 = (1, 2, 3) >>> liste 2 = (‘a’, ‘b’) >>> [(a, b) for a in liste 1 for b in liste 2] [(1, ‘a’), (1, ‘b’), (2, ‘a’), (2, ‘b’), (3, ‘a’), (3, ‘b’), ] >>> [(a, b) for a in liste 1 for b in liste 2 if a%2] [(1, ‘a’), (1, ‘b’), (3, ‘a’), (3, ‘b’), ] 43

Fonctions Les fonctions Nouvelle fonction définie par def Appelée par son nom en lui

Fonctions Les fonctions Nouvelle fonction définie par def Appelée par son nom en lui passant des paramètres en argument Les variables numériques et non modifiables passent par valeur et les variables modifiables (liste et dictionnaire) par référence Renvoi des valeurs ou objets (même compliqués, ex classe) def fonction(arg 1, arg 2): #bloc de la fonction arg 3=arg 1+arg 2 return arg 3 b=1, c=2 a = fonction(b, c) print a 3 44

Gestion des exceptions C++, Java et Python ont un mécanisme de gestion d’erreur appelé

Gestion des exceptions C++, Java et Python ont un mécanisme de gestion d’erreur appelé gestion d’exception : ◦ Interrompt le déroulement normal d’un programme et remonte à un niveau quelconque dans la pile d’appel des fonctions ◦ Contrairement au mécanisme classique de retour de code d’erreur, les fonctions d’une pile d’appels ne sont pas toutes obligées de gérer l’erreur 45

Gestion des exceptions Exemple de code générant une erreur : >>> a=8 >>> b=0

Gestion des exceptions Exemple de code générant une erreur : >>> a=8 >>> b=0 >>> a/b Traceback (most recent call last): File "<stdin>", line 1, in ? Zero. Division. Error: integer division or modulo by zero Code implémentant try/except : try: c=a/b print c except Zero. Division. Error: print "Attention: division par 0 " except: print "Erreur de division : ", a, "/", b raise Liste des erreurs : http: //docs. python. org/library/exceptions. html#bltin-exceptions 46

Gestion des exceptions Syntaxe : try: … … except erreur_1 : si le code

Gestion des exceptions Syntaxe : try: … … except erreur_1 : si le code testé génère une erreur de type erreur_1 except erreur_2 : si le code testé génère une erreur de type erreur_2 except : si le code testé génère une autre erreur else: si le code n'a pas généré d'erreur Gestion des exceptions code à tester optionnel Géneration d'une erreur (qui va stopper le programme) : raise try: … except erreur_1 : si le code testé génère une erreur de type erreur_1 l'erreur va être générée … raise ou raise Exception(code erreur, texte erreur) pass (si on veut passer cette erreur) erreur personnalisée 47

Gestion des exceptions saisie d'un entier au clavier while true: try: . . .

Gestion des exceptions saisie d'un entier au clavier while true: try: . . . x = int(raw_input("Please enter a number: ")) break except Value. Error: print "Oops! That was no valid number. Try again. . . " Ouverture / lecture d'un fichier import sys try: f = open('myfile. txt') s = f. readline() i = int(s. strip()) except IOError: print "I/O error" raise ou traitement de l'erreur except Value. Error: print "Could not convert data to an integer. " raise ou traitement de l'erreur except: print "Unexpected error: ", sys. exc_info()[0] raise dernière exception 48

Lecture de fichiers Lecture/écriture de fichiers Fichiers sont un des systèmes d’entrées/sorties de base

Lecture de fichiers Lecture/écriture de fichiers Fichiers sont un des systèmes d’entrées/sorties de base Fichier créé avec la fonction open(filename[, mode]) Fichier lu avec la fonction open(filename, "r"). read() Mode Signification r Lecture seule w Ecriture (fichier préexistant écrasé) a Ecriture en fin de fichier r+ Ecriture et lecture w+ Ecriture et lecture (fichier préexistant écrasé) a+ Ecriture et lecture (Ecriture en fin de fichier) 49

Lire et écrire dans un fichier Lire le contenu d'un fichier Pour afficher tout

Lire et écrire dans un fichier Lire le contenu d'un fichier Pour afficher tout le contenu d'un fichier, vous pouvez utiliser la méthode read sur l'objet-fichier. fichier = ("data. txt", "r") print fichier. read() fichier. close() Ecrire dans un fichier Voici la syntaxe pour écrire dans un fichier: fichier = ("data. txt", "a") fichier. write("Bonjour monde") fichier. close() 50

Script et langage Python Importer � On peut importer le contenu d’un module avec

Script et langage Python Importer � On peut importer le contenu d’un module avec la commande import : import sys, os print sys. modules["os"] visualisation du nom du fichier physique importé < module 'os' from '/usr/lib 64/python 2. 3/os. pyc'> � Une partie d’un module, il n’est plus nécessaire de préciser les identifiants par le nom du module : os. path ou � Fonction from os import path dir() permet de lister le contenu d’un objet (builtins, fonctions, …) import os print dir(os) ['EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR’, …] � Fonction help() : aide sur les modules help(os) help(os. path) 51

Importer Script et langage Python Pour importer l’ensemble du contenu d’un module from os

Importer Script et langage Python Pour importer l’ensemble du contenu d’un module from os import * ( tous les identifiants sont importés exceptés ceux dont le nom commence par __) Il est recommandé de ne pas importer l'ensemble du contenu d'un module si cela n'est pas nécessaire : Masquage des noms déjà définis from os import * (masque la fonction open()) Pour visualiser l'ensemble des identifiants importables par un module : print (<nom_module>. __all__) Ne pas importer (charger) trop de modules : saturation mémoire (lenteur) 52

Notions d’interface graphiques Voici le code de votre premier hello world #!/usr/bin/env python #

Notions d’interface graphiques Voici le code de votre premier hello world #!/usr/bin/env python # -*- coding: utf-8 -*from tkinter import * fenetre = Tk() label = Label(fenetre, text="Hello World") label. pack() fenetre. mainloop() 53

Les widgets Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci

Les widgets Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci -dessous, on lui propose de fermer la fenêtre. # bouton de sortie bouton=Button(fenetre, text="Fermer", command=fenetre. quit) bouton. pack() Les labels sont des espaces prévus pour écrire du texte. Les labels servent souvent à décrire un widget comme un input # label = Label(fenetre, text="Texte par défaut", bg="yellow") label. pack() 54

Les widgets Les cases à cocher Les checkbox proposent à l'utilisateur de cocher une

Les widgets Les cases à cocher Les checkbox proposent à l'utilisateur de cocher une option. # checkbutton bouton = Checkbutton(fenetre, text="Nouveau? ") bouton. pack() Les boutons radio sont des cases à cocher qui sont dans un groupe et dans ce groupe seul un élément peut être sélectionné. # radiobutton value = String. Var() bouton 1 = Radiobutton(fenetre, text="Oui", variable=value, value=1) bouton 2 = Radiobutton(fenetre, text="Non", variable=value, value=2) bouton 3 = Radiobutton(fenetre, text="Peu être", variable=value, value=3) bouton 1. pack() bouton 2. pack() bouton 3. pack() http: //apprendre-python. com/page-tkinterface-graphique-python-tutoriel 55

Introduction Forces et faiblesses de Python � Forces : ◦ Typage dynamique ◦ Pas

Introduction Forces et faiblesses de Python � Forces : ◦ Typage dynamique ◦ Pas de compilation : une seule erreur visible mais reste du code tourne => robustesse du code � Faiblesses ◦ Pas de binaire compilé en natif (. pyc) ◦ Pas de vérification statique du typage ◦ Pas de multithreading (mais librairie multiprocessing) 56

57

57