06/09/2020 Langage Python

3y ago
29 Views
2 Downloads
414.92 KB
75 Pages
Last View : 1m ago
Last Download : 3m ago
Upload by : Julia Hutchens
Transcription

06/09/2020Langage PythonFondamentauxCours Copyright 2020 Cyril Keime & Arnaud Bêche

PREAMBULE05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche2

Pourquoi un cours ? Les outils utilisés par un ingénieur sontsouvent dotés d’une interface utilisateurgraphique et manuelle : appareils de mesure,Excel, outils d’exploitation, de dépouillement,d’analyse, etc.Pour réduire les actions manuelles au strictminimum, pour augmenter la productivité, pouréviter les erreurs de saisie, pour maîtriser laconfiguration des données utilisées, utiliser unlangage de programmation tel que Python estun progrès notable.Python est aussi beaucoup utilisé dansd’autres domaines : prototypage rapide,développement web, langage de script pourprogiciel ou jeu vidéo, etc.05/10/2020Travail quotidien de l’ingénieurAutomatisation de son activité à l’aide descripts Python pilotant les outils etréalisant les traitementsLangage versatile, à la fois professionnel etgrand public (voir projet Raspberry Pi) Copyright 2020 Cyril Keime & Arnaud Bêche3

Le cours Objectif : maîtriser les bases dulangage Python et savoir ce qu’ilest possible de faire. Le cours est divisé en sessions decourte durée, théorique (cours etéchanges avec l’intervenant) etpratique (exercice et assistancedirecte de l’intervenant). L’ensemble des supports de coursest disponible sur le site ducours :https://learnpython.ovh05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche4

Les modules MPYQTCOMPLEMENTCALCULSSCIENTIFIQUESANNEXEREGLES DECODAGE05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche5

TABLE DES MATIERESIntroductionEnvironnement de développementBases du langageFonctions et modulesClasses et programmation orientée objetPaquetages standardsConclusionAnnexe05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche6

INTRODUCTION05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche7

Langage compiléC, C , Haskell, Erlang Code sourceCompilateurPlusieursétapesCode assembleurAssembleurCode objet(ou code binaire)Linker(ou éditeur de liens)ExécutableMAÎTRISE DE LA MACHINETraduction en code machine avant l’exécution05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche8

Langage interprétéPython, Javascript, Lua, Java, Ruby, Perl Code sourceInterpréteurPas decompilationCode de machinevirtuelle (bytecode)Machine virtuelleExécutionPRODUCTIF / MAQUETTAGE RAPIDETraduction en code machine au fur et à mesure de l’exécutionExécution plus lente qu’un programme compilé05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche9

Programme Hello,world!C(1971)C (1983)Python(1991)05/10/2020#include stdio.h #include stdlib.h int main() {char msg[100] "Hello,world!";printf("%s\n", msg);exit(0);}7 lignes#include iostream #include string using namespace std;int main() {string msg "Hello,world!";cout msg endl;return 0;}8 lignesmsg 'Hello,world!'print(msg)2 lignes Copyright 2020 Cyril Keime & Arnaud Bêche10

Programmation impérativeC, bash Le problème à résoudre est vu comme une suite d’étapesmodifiant l’état du système jusqu’à la résolution :AEtape1Etape2 EtapenB Un développeur peut donc coder chaque étape et la testerunitairement. OK avec Python A la fin, tout est assemblé et le logiciel permet d’obtenir B àpartir de A ! Inconvénient : une étape isolée de son contexte n’est pasforcément réutilisable 05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche11

Programmation impérativeLangages objet : C , Java Le problème à résoudre est vu comme la collaborationd’entités autonomes encapsulant un état évolutif :AObjet 1Objet 3BObjet 2 Un développeur peut donc coder chaque objet et le testerunitairement. OK avec Python A la fin, tout est assemblé et le logiciel permet d’obtenir B àpartir de A ! Avantage : un objet isolé de son contexte est très souventréutilisable !05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche12

Programmation déclarativeLangages fonctionnels : Haskell, Erlang Le problème à résoudre est vu comme une suite defonctions autonomes sans effet de bord :AFonction1Fonction2 FonctionnB Un développeur peut donc coder chaque fonction et latester unitairement. En partie OK avec Python A la fin, tout est assemblé et le logiciel permet d’obtenir B àpartir de A ! Avantage : une fonction isolée de son contexte estréutilisable et sûre !05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche13

ENVIRONNEMENT DEDEVELOPPEMENT05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche14

Écrire et exécuter un programme Python est un langage interprété. En pratique, Python est un logicielinstallé dans un système (Windows,Linux, Mac, etc), et se présente sous laforme d’un exécutable. Deux modes d’exécution :– Mode interactif : Au sein d’une console texte interactive (shell).Les commandes sont saisies au clavier etexécutées une par une.– Mode fichier : 05/10/2020Dans une console de l’OS ou au sein d’unéditeur, spécialisé ou non.Le fichier entier est lu et exécuté.Exemple dans une console Windows :python.exe test.pyVocabulaireFichier .pymoduleScript PythonmoduleProgramme Pythonplusieurs modulesPaquetage Pythonplusieurs modules Copyright 2020 Cyril Keime & Arnaud Bêche15

IDLE - Integrated DeveLopment Environment IDLE est un environnement très simplefourni avec Python.EXERCICEIl permet de combiner le mode interactifStocker le résultat de l’opération 5/2 danset le mode fichier.une variable, puis afficher cette variable àl’écran.Mode d’emploi :1. En mode interactif– Lancer IDLE. Un shell Python apparaît.2. En mode fichier–Choisir File / New File (Ctrl-N) pourcréer un nouveau module.– Saisir le code du module dans lanouvelle fenêtre.– Exécuter le module : F5. Les résultatss’affichent dans la première fenêtre.Indice :print('Hello,World!')Utiliser un encodage UTF-8.Ne pas utiliser de vraies tabulations.(touche TAB 4 espaces)05/10/2020 Copyright 2020 Cyril Keime & Arnaud BêcheAutres éditeurs :Eclipse avec PydevPyCharm16

Documentation La documentation de Python est trèsbien faite, et contient de très nombreuxexemples de mise en œuvre.Il est indispensable de savoir naviguerdans la documentation pour trouverl’information cherchée.Le site python.orgIl contient beaucoup d’informations sur lelangage ainsi que la documentationcomplète et à jour.https://www.python.org/Deux chapitres de la documentationsont utilisés couramment :––Tutorial(start here)Library Reference(keep this under your pillow)05/10/2020type(objet)help(objet) Copyright 2020 Cyril Keime & Arnaud Bêche17

BASES DU LANGAGE05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche18

Les listes (1/5) Le type liste est fondamental enprogrammation Python.EXERCICEL’utilisation de listes doit être un réflexe,et la syntaxe doit être connue sansCréer deux listes de 3 éléments, a et b.hésitation.Une liste peut contenir des données de Créer une troisième liste contenant, dansl’ordre :tout type.Créer une liste videa []a list()Créer une listea ['lorem', 'ipsum', 12]Ajouter un élément Les éléments de aLe dernier élément de bLe premier élément de aLes éléments de ba.append(34)Concaténer deux listesc a bAccéder au nièmeélémentAfficher la liste créée.a[n-1]05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche19

Les listes (2/5)bcd 0 1 -len(L) -42-33-2L ae -1 len(L)-11 inclus, 3 exclus, -4 inclus, -2 exclusSous-liste de 2 éléments : 3-1 -2-(-4) 2L[1:3] L[-4:-2] L[1:-2] L[-4:3] En limite gauche, le début de la liste est noté ainsi : L[:3] L[0:3]En limite droite, la fin de la liste est notée ainsi : L[-2:]Si besoin, limites gauche et droite ramenées aux bornes : L[-99:99] LSi incohérence, liste vide : L[4:-1] []05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche20

Les listes (3/5) Accéder à des éléments :EXERCICELe premier / le derniera[0] / a[-1]Le nième élément depuis le début / la fina[n-1] / a[-n] Extraire des sous-listes :Toute la liste (ie copier une liste !)b a[:]Tous les éléments, sauf le premierCréer deux listes de 3 éléments, a et b.Créer une troisième liste contenant, dansl’ordre :1. Les deux premiers éléments de a2. Les deux derniers éléments de ba[1:]Les deuxième et troisième élémentsa[1:3]Afficher la liste créée.Les trois premiers élémentsa[:3]Les trois derniers élémentsa[-3:]05/10/2020Taille d’une liste L : len(L) Copyright 2020 Cyril Keime & Arnaud Bêche21

Les listes (4/5) En Python, une boucle for opère surune liste.EXERCICELa boucle for commence par lepremier élément de la liste, et setermine après avoir « consommé » ledernier.Soit le texte :« Roma in Italia est »Afficher le texte, un mot par ligne.A chaque itération, la variable muetteprend la valeur d’un élément de la liste(dans l’ordre).Indice :'Lorem ipsum'.split()for val in [-1, 99, 'foo', 'bar']:print(val)for item in mylist:print(item)05/10/2020En Python, un bloc de codeest délimité par son indentation. Copyright 2020 Cyril Keime & Arnaud Bêche22

Les listes (5/5) Il est possible d’utiliser une syntaxe trèsconcise pour créer des listes (appeléelist comprehension).En voici différents exemples :–––Création à partir d’une liste d’indices et d’unetransformation.Création à partir d’une liste source et d’unesélection avec condition.Création à partir d’une liste source et d’unetransformation avec condition.Une liste dispose de méthodestrès utiles : cf Tutorial5.1. More on Lists05/10/2020#!/usr/bin/python3# -*- coding: utf-8 -*a [0, 1] * 5print(a)b [i*i for i in range(10)]print(b)c [i for i in b if i 50]print(c)d [i if i 50 else -1 for i in b]print(d)e [3, 2, 1]f sorted(e)print(f)e.sort()print(e) Copyright 2020 Cyril Keime & Arnaud Bêche23

Les dictionnaires Le type dictionnaire est très utile : ilpermet d’associer une valeur à une clé.Comme une liste, un dictionnaire peutcontenir des données de tout type. Uneclé est généralement une chaîne decaractères ou un nombre.Créer un dictionnaire videa {}a dict()EXERCICECréer un dictionnaire à 3 entrées.Afficher les clés et les valeurs à l’aided’une boucle for.Indice :a.keys()Créer un dictionnaire non videa {k1:v1, k2:v2, k3:v3}Ajouter ou modifier un couple (clé, valeur)a[k] vAccéder à la valeur associée à une cléa[k]05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche24

Les tuples Le type tuple est une généralisation dela notion de couple : un couple est un 2tuple.Un tuple permet de grouper desdonnées disparates. Si une fonctiondoit retourner plusieurs valeurs, ellepeut le faire via un tuple :return val1, val2, val3A connaître :–Vérifier qu’il est impossible de remplacer laliste ou le dictionnaire par autre chose,mais qu’il est possible de faire évoluer leurcontenu !x, y, z aObtenir le ième élément Point importanta x, y, zOpération inverse (tuple unpacking) –Créer un 3-tuple : une chaîne decaractères, une liste, un dictionnaire.Créer un tuple (tuple packing) –EXERCICEa[i-1]Un tuple est "immutable", contrairement à uneliste, qui est "mutable" :a[i] object provoque une erreurAttention a[i] n’est pas forcément constant !05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche25

Les named tuples (1/2) Un named tuple est un tuple dont leschamps sont nommés, ce qui permetune manipulation aisée :Employee.name au lieu deEmployee[0]EXERCICECréer un namedtuple Friend permettant destocker nom, prenom, telephone.Créer une liste d’amis et trier cette listeUn named tuple fonctionne comme untuple ! Il est cependant nécessaire de le avec sort(). Constat ?définir au préalable.Créer un namedtuple Friend2 permettantde stocker en plus une adresse, puisconvertir votre liste de Friend en Friend2.A connaître :–Créer une classe namedtuple spécifique –Point namedtuple('Point', ['x', 'y'])Point importantCréer un namedtuple –(En Python 3 : utiliser l’opérateur *)p Point(x 11, y 22)# ou Point(11,22)Manipuler les éléments d’un namedtuple 05/10/2020p.x p.y 33# ou p[0] p[1]En début de module, écrire :from collections import namedtuple(fonctionnalité standard mais non native) Copyright 2020 Cyril Keime & Arnaud Bêche26

Les named tuples (2/2) Depuis Python 3.6, un named tuplepeut être déclaré comme suit :from typing import NamedTupleclass Employee(NamedTuple):name: strid: int Ce code est équivalent à :Employee namedtuple('Employee', ['name', 'id'])Consulter ladocumentation !05/10/2020EXERCICETrier votre liste par ordre décroissant denuméro de téléphone.Indice :Utiliser le paramètre key pour spécifier lafonction de calcul de la clé.def getkey(x):return x.telephonesort(key getkey)ou bien :sort(key lambda x:x.telephone) Copyright 2020 Cyril Keime & Arnaud Bêche27

Les itérables Un itérable est un objet pouvant être utilisépar une boucle, avec les caractéristiquesd’une liste (début, fin, élément suivant).Note : un itérable peut être converti en une vraie liste.Si x est un itérable, list(x) est une liste contenant tousles éléments que fournirait progressivement x. Autiliser avec précaution ! Exemples de fonctions built-in renvoyant unitérable :iter()enumerate()zip() # seq : séquence à transformer enitérable (par exemple [1,2,3])it iter(seq)next(it)# mylist : liste à énumérerfor i,item in enumerate(mylist):print(i, item)# klist : liste des clés# vlist : liste des valeursd dict(zip(klist, vlist))Obtention de l’élément suivant :next()05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche28

Les fichiers Ouvrir un fichier : open–En écriture –En lecture –line f.readline()Fermer un fichier NE PAS OUBLIER ! f.write('Lorem ipsum\n')f.write('Result: ' str(result) '\n')Lire une ligne –f open('myfile.txt', 'r')Ecrire une ligne –EXERCICEf open('myfile.txt', 'w')f.close()Utiliser un bloc with et for :with open('myfile.txt', 'r') as f:for line in f:data line.strip()[:72]print(data)# fin du bloc with# appel automatique de f.close() !05/10/2020Demander à l’utilisateur de saisir deuxvaleurs numériques.Enregistrer la somme et la différence dansun fichier texte.Relire et afficher le fichier texte créé.Indice :s input()En Python 2, écrire : s raw input() Copyright 2020 Cyril Keime & Arnaud Bêche29

Les conditions En Python, l’instruction if permet dedéfinir un test.EXERCICEif x 0:x - 1if x 0:x - 1elif x 0:x 10else:x -1Test sur des nombresCréer une liste vide, et une autre non vide.Utiliser successivement chacune de cesdeux variables comme expression d’unecondition.Idem avec des chaînes de caractères.if s 'Lorem':if s ! 'Lorem':Test sur des chaînes decaractèresif x:if not x:if x and not y:Test sur des booléensif True:if 1:if False:if 0:if item in mylist:if item not in mylist:Test sur des listesTrès important !if x is y:if x is None:if x is not None:Test sur des objetsis compare l’identité dedeux objets. None null05/10/2020L’instruction pass ne fait rien !(mais remplace un bloc de code) Copyright 2020 Cyril Keime & Arnaud Bêche30

Les boucles En Python, deux types de boucle sontdisponibles. La boucle for, déjà étudiée, permetd’exécuter un bloc de code pourchaque élément d’une liste,successivement et dans l’ordre. La boucle while permet d’exécuter unbloc de code tant qu’une condition estvraie.EXERCICEQuel est l’effet d’une instruction breakdans une boucle ?Coder un exemple.Idem avec l’instruction continue.Chercher dans ladocumentation Python !for item in mylist:passwhile expression:pass05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche31

Exceptions Certains morceaux de code sontrisqués et peuvent provoquer uneerreur run-time. Gérer une erreur run-time est possiblegrâce aux exceptions. Voici un exemple très simple de codefatal :1/0 Et de gestion d’exceptions :EXERCICEDemander à l’utilisateur de saisir un entier.Si l’utilisateur saisit une valeur invalide,gérer l’exception et renvoyer -1.Indice :Déterminer d’abord l’exception à gérer enfaisant un essai sans bloc try.try:1/0except ZeroDivisionError:print('Division par 0.')except:print('Erreur inattendue.')05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche32

Pour finir Une sélection de morceaux de code àconnaître et à réutiliser !–Listes, boucle et condition–Conversions nombre / chaîne de caractères–Echange de deux valeurs–Affichage formaté–dict comprehension05/10/2020liste ['a', 'b', 'c']for item in liste:if item not in ['a', 'z']:print(item)result1 2.54result2 float(' 00002.540')print('Result: ' str(result1))print('Result: ' str(result2*100))print('Result: ' str(int(result2)*100))a 1b 11a, b b, aprint(a, b)print('{} {} {}'.format(a, b, a b))print(f'{a} {b} {a b}') # Python 3.6d {name[:3].upper():name for name in['France', 'Australie', 'USA']}print(d) Copyright 2020 Cyril Keime & Arnaud Bêche33

FONCTIONS &MODULES05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche34

Les fonctions (1/4) Une fonction est un regroupement decode. En Python, le mot-clé def permetde définir une fonction.Ce mot-clé permet aussi de créer desfonctions membres d’une classe enprogrammation orientée objet. Unexemple sera donné dans la suite ducours.def myfunction(param1, param2):"""Ma fonction."""sum param1 param2diff param1 - param2return sum, diffEXERCICEDévelopper la fonction spécifiée par :ENTREE : une liste de phrases.TRAITEMENT :- Créer un dictionnaire associant lepremier mot de chaque chaîne à lachaîne elle-même.- Trier la liste fournie en entrée par ordrealphabétique.print(myfunction(5, 3))SORTIE : le dictionnaire et la liste triée.05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche35

Les fonctions (2/4) Lors de la déclaration d’une fonction, il estpossible de donner une valeur par défaut àchaque argument.La valeur par défaut d’un argument est lavaleur que prend l’argument s’il n’est passpécifié lors de l’appel de la fonction.Par ailleurs, lors de l’appel d’une fonction,il est possible de spécifier la valeur d’unargument quelconque de deux façons :def myfunctionA(param1, param2):print(param1, param2)def myfunctionB(param1, param2, param3 False, param4 0):print(param1, param2, param3, param4)def myfunctionC(param1, param2 'a', param3 False, param4 0):print(param1, param2, param3, a','a',param3 True)param4 1)param4 1, param3 True)True, 1)'b')param4 1, param3 True, param2 'b')Par sa position : la valeur souhaitée est écritedirectement, et Python associe la valeur au bonargument grâce à sa position dans l’appel.Par son nom : le nom de l’argument devient unmot-clé permettant de spécifier sa valeur. Dansce cas, la position n’intervient pas.05/10/2020D’abord les arguments « position »puis les arguments « mot-clé » Copyright 2020 Cyril Keime & Arnaud Bêche36

Les fonctions (3/4)def getheadtemperature(config):"""Get head temperature ( C)."""simu, t configif simu:headtemperature [25 i*2.5 for i in range(24)]return headtemperature[t]else:return testbench.gettemperature()def getemittedpower(config):"""Get emitted power (W)."""simu, t configif simu:emittedpower \[1000, 1025, 1050, 1075] \[1100 - i*50 for i in range(20)]return emittedpower[t]else:return testbench.getpower()05/10/2020 Copyright 2020 Cyril Keime & Arnaud BêcheUn exemple à étudier !37

Les fonctions (4/4)def runtest(simu False):"""Run test (24 h)."""reporttemplate '{:4d}; {:4.1f}; {:4.0f}'report []report.append('{:4}; {:4}; {:4}'.format('time','temp','pow'))for t in range(24):headtemperature getheadtemperature((simu, t))emittedpower getemittedpower((simu, rature,emittedpower))for line in report:print(line)Un exemple à étudier !#runtest()simu Trueruntest(simu)05/10/2020 Copyright 2020 Cyril Keime & Arnaud Bêche38

Affichage formaté Formater une chaîne de caractèrespour un affichage sur écran ou unenregistrement sur disque est unebonne pratique. Méthode 1 : définir une chaîne deformatage, puis l’utiliser pour formaterplusieurs lignes : format strings Méthode 2 : formater une chaîne demanière immédiate :

Objectif : maîtriser les bases du langage Python et savoir ce qu’il est possible de faire. Le cours est divisé en sessions de courte durée, théorique (cours et échanges avec l’intervenant) et pratique (exercice et assistance directe de l’intervenant). L’ensemble des supports de cours est disponible sur le site du cours :

Related Documents:

Python Programming for the Absolute Beginner Second Edition. CONTENTS CHAPTER 1 GETTING STARTED: THE GAME OVER PROGRAM 1 Examining the Game Over Program 2 Introducing Python 3 Python Is Easy to Use 3 Python Is Powerful 3 Python Is Object Oriented 4 Python Is a "Glue" Language 4 Python Runs Everywhere 4 Python Has a Strong Community 4 Python Is Free and Open Source 5 Setting Up Python on .

Python 2 versus Python 3 - the great debate Installing Python Setting up the Python interpreter About virtualenv Your first virtual environment Your friend, the console How you can run a Python program Running Python scripts Running the Python interactive shell Running Python as a service Running Python as a GUI application How is Python code .

Python is readable 5 Python is complete—"batteries included" 6 Python is cross-platform 6 Python is free 6 1.3 What Python doesn't do as well 7 Python is not the fastest language 7 Python doesn't have the most libraries 8 Python doesn't check variable types at compile time 8 1.4 Why learn Python 3? 8 1.5 Summary 9

Cet outil est le langage de programmation C . Mais, au-delà du langage en lui-même, ce sont les bases de la programmation qui sont ciblées ; ainsi que l'acquisition des techniques algorithmiques qui les accompagnes. Dans la réforme précédente le langage étudié était le langage C. Cette transition vers le C , permet

There are currently two versions of Python in use; Python 2 and Python 3. Python 3 is not backward compatible with Python 2. A lot of the imported modules were only available in Python 2 for quite some time, leading to a slow adoption of Python 3. However, this not really an issue anymore. Support for Python 2 will end in 2020.

site "Python 2.x is legacy, Python 3.x is the present and future of the language". In addition, "Python 3 eliminates many quirks that can unnecessarily trip up beginning programmers". However, note that Python 2 is currently still rather widely used. Python 2 and 3 are about 90% similar. Hence if you learn Python 3, you will likely

A Python Book A Python Book: Beginning Python, Advanced Python, and Python Exercises Author: Dave Kuhlman Contact: dkuhlman@davekuhlman.org

Mike Driscoll has been programming with Python for more than a decade. He has been writing about Python on his blog, The Mouse vs. The Python, for many years. Mike is the author of several Python books including Python 101, Python Interviews, and ReportLab: PDF Processing with Python. You can find Mike on Twitter or GitHub via his handle .