Support FormationPython 2019 Bloc1
Support FormationPython 2019 Bloc1
ECUE LANGAGE
PYTHON &
ALGORITHMIQUE
Code PROG242302
Volume Horaire: 48H
4 ECTS
Dr Lambert KADJO
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
www.kadjo-lambert.c4.fr
1-PREMIER CONTACT AVEC PYTHON 1.1 Principales caractéristiques du
langage Python
Caractéristiques
Python est un langage de programmation impérative, structurée, orientée objet, de haut
niveau
Python étant ainsi appelé en référence à la troupe de comiques britanniques Monty
Python, le nom IDLE pourrait être une référence à Eric Idle, un membre fondateur de la
troupe.
Il présente les avantages suivants :
Sa syntaxe est très simple et concise : "on code ce que l'on pense".
Proche du 'langage algorithmique'.
Moderne. Très largement répandu dans l'industrie, l'enseignement et la recherche, notamment
pour ses applications scientifiques. Une large communauté participe à son développement.
Puissant, muni de nombreuses bibliothèques de fonctions. Dont de très bonnes bibliothèques
scientifiques.
Pratique pour travailler sur des objets mathématiques. Assez proche du langage mathématique.
Multi paradigmes, supportant les principaux styles de programmation : impératif, procédural,
orienté objet...
Multi plateformes : GNU/Linux, Mac OS X, Windows...
Libre et gratuit : logiciel Open Source (www.opensource.org) distribué sous la licence PSF (Python
Software Foundation) compatible avec la GPL (Gnu Public Licence).
Gratuit, disponible sur la plupart des plateformes (Windows, Mac, Linux, ...).
Python est dynamiquement typé.
DATA SCIENCE INSTITUTE/INP-HB 2019
Python est extensible : On peut l'interfacer avec d'autres langages (C, C++, Delphi, Java…)
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.1 Principales caractéristiques du
langage Python
Historique
1991 : Guido van Rossum travaille aux Pays-Bas sur le projet AMOEBA,
un système d’exploitation distribué. Il conçoit Python à partir du langage
ABC et publie la version 0.9.0 sur un forum Usenet
1996 : sortie de Numerical Python. Ce langage a été baptisé ainsi en hommage à la troupe
de comiques les « Monty Python ».
Quelques implémentations
Plusieurs implémentations existent :
Quelques implémentations
De nombreuses bibliothèques aident le développeur à travailler sur des projets particuliers.
Plusieurs bibliothèques peuvent ainsi être installées pour, par exemple :
développer des interfaces graphiques en Python.
écrire de petits programmes très simples, appelés scripts, chargés permettant
d’effectuer des tâches très précises sur l’ordinateur ;
écrire des programmes complets, comme des jeux, des suites bureautiques, des logiciels
multimédias, des clients de messagerie…
faire des projets très complexes, comme des progiciels (ensemble de plusieurs logiciels
pouvant fonctionner ensemble, principalement utilisés dans le monde professionnel).
5) enfin
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Si, par exemple, vous avez installé Python 3.6, vous pouvez y accéder grâce à la commande :
Pour fermer la ligne de commande Python, n'utilisez pas CTRL + C mais CTRL + D ou exit().
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installateurs libres
- Python scientifique:
Python(x,y) pour Python 2,
WinPython pour Python 2 et 3
https://pyinstaller.readthedocs.io/en/stable/usage.html
https://www.python.org/dev/peps/
Exemple: https://www.python.org/dev/peps/pep-0008/
NB: En Python, tout est objet, on accède à ces objets par leur référence. Cependant, on ne
manipule JAMAIS directement les références des objets: les noms de variables servent à
cela.
Lorsqu’un objet est créé, il hérite de toutes les méthodes de son type.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.1 Notion de variables
Noms de variables
Le nom est une suite quelconque de caractères alphanumériques (lettres alphabétiques
(majuscules ou non mais attention cela définit une variable différente), de chiffres
décimaux, de tiret bas.
Par exemple ces deux variables sont différentes
Noms de variables
NB :
Le premier caractère ne peut pas être un chiffre.
Il est, en théorie, possible de faire commencer un nom de variable par un tiret bas
comme premier caractère;
il est fortement déconseillé d'utiliser des noms de la forme __variable__ qui sont
réservés au langage.
Il n'est pas possible d'utiliser d'autres caractères que les caractères
alphanumériques et le tiret bas. Notamment le tiret haut - est interprété comme
l'opération de soustraction
En Python, les variables sont sensibles à la casse
Noms de variables
Mots-clés:
Il existe en python certains mots spéciaux, qu'on appelle des mots-clés, ou keywords en
anglais, qui sont réservés et ne peuvent pas être utilisés comme un nom de variable.
La liste complète des 33 mots-clés est
Noms de variables
Mots clefs du langage
Noms de variables
Mots-clés du langage
Affectations simples
Une affectation se fait en utilisant le signe =
On remarque au passage que, dans l’interpréteur interactif, taper juste age a le même effet
que print(age). Ce n’est pas le cas dans l’éditeur où l’on a besoin de la fonction print pour
afficher un résultat.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.2 Affectations
Affectations multiples
Python permet les affectations multiples:
Opérateurs équivalence
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
x //= y x = x // y
x **= y x = x ** y
x %= y x=x%y
nom et ville ne sont pas des variables, ce sont juste des mots clés
On peut également combiner position numérique et mots clés
On peut préciser les tailles minimales des chaines de caractères, Cela insère une
chaine vide en début d’écriture si la taille est inférieure à celle fixée.
NB: Les variables n’ont pas de type mais référencent des objets en mémoire qui ont un type
0 1 2 3 4 5 6 7 8 9 A B C D E F
215 ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ ⅟
216 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ Ⅼ Ⅽ Ⅾ Ⅿ
217 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ⅺ ⅻ ⅼ ⅽ ⅾ ⅿ
Exposants et indices
0 1 2 3 4 5 6 7 8 9 A B C D E F
207 ⁰ ⁱ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ
208 ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎
209 ₐ ₑ ₒ ₓ ₔ DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Opérateurs arithmétiques
Dans le tableau ci-après, sont présentés les symboles utilisés pour les opérations de base.
NB : Pour la branche 2. de Python, la division de deux entiers se fera comme la division entière.
Opérateurs logiques
Opérations Opérateurs Autres opérateurs
ET and
Opérations Opérateurs
OU or
même identité ? is
négation not
identité différente ? is not
ET bit à bit &
appartient à ? in
XOR bit à bit ˆ
n’appartient pas à ? not in
OR bit à bit |
complément à 2 ~DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Pour prendre en compte le retour chariot, on utilise le triple quote (tres utile pour la
documentation)
Chaînes de caractères
Méthodes : ce type d’objet possède une quarantaine de méthodes:
casser, recoller, remplacer
split(seps[, maxsplit]) : découpe la chaîne en maxsplit morceaux pour constituer une liste de
sous-chaînes. On peut choisir le caractère séparateur (seps) en le fournissant comme
argument, sinon c'est un espace par défaut.
rsplit() effectue la même chose que split en commençant par la fin
join(liste) : rassemble une liste de chaînes en une seule (inverse de split()), la chaîne à laquelle
on applique cette méthode est celle qui servira de séparateur (un ou plusieurs caractères)
Chaînes de caractères
Méthodes : ce type d’objet possède une quarantaine de méthodes:
Rechercher, compter
find(sub[, start[, stop]]) : renvoie l'indice de la chaîne sub dans la sous-chaîne de
start à stop, sinon renvoie -1
rfind() effectue le même travail que find en commençant par la fin.
index(car) et rindex(car) (font de même que find mais produisent une erreur (exception) si
la chaîne n'est pas trouvée) : retrouve l'indice (index) de la première occurrence du
caractère car dans
la chaîne
count(sch) :
compte le nombre
de sous-chaînes
sch dans la chaîne
Création de
liste vide
Avec deux arguments entiers m,n, range(m,n) retourne la liste des max(0; n − m) en ers
consécutifs qui sont m ⩽ . < n.
Effacement d’éléments
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Exemple 1:
Soient L, une liste et L_prim, une copie de L
Objet en mémoire
L et L_prim sont en effet des
10 11 12 13 14 alias, des étiquettes du même
objet [10, 11, 12, 13, 14].
Exemple 2: Utilisation de la fonction list(). Soient L, une liste et L_prim, une copie de L
Objet en mémoire
10 11 12 13 14 L et L_prim pointent sur
deux objets différents mais de
Objet en mémoire mêmes contenus
10 11 12 13 14
Objet modifié en mémoire
10 11 12 13 14 15 Donc, effectuer une
Objet en mémoire opération sur L ne
peut en aucun cas,
10 11 12 13 14 affecter L_prim si L ne
contient que des
objets de types
simples
Exemple 2: Utilisation de la fonction list(). Ne marche pas si la liste contient d’autres listes
Utilisation de la fonction
deepcopy() du module copy
Ça
marche
Echange
NB: Les crochets délimitent les listes, les parenthèses délimitent les tuples et les accolades
délimitent les dictionnaires.
Créons ce dictionnaire
Cote_d_Ivoire = {'Capitale' : ‘Yamoussoukro', 'Superficie' : 322462, 'Population' : 25000000, 'Langue' : 'Français‘}
Cote_d_Ivoire.copy() retourne une copie du dictionnaire telle que vue avec les listes.
On crée un objet de type set en lui passant en paramètre une liste d'éléments qui sont
dans l'ensemble.
Pour créer un set
Méthodes
Opérations
des opérations d’appartenance avec in
Test d’Inclusion
Différence
Différence symétrique
Définition et illustration1
On parle de référence partagée, lorsqu’au moins 2 variables référencent le même
objet.
cela ne cause aucun problème lorsque l’objet est immuable
lorsque l’objet référencé est un mutable, il y a ce que l’on appelle effet de bord
Variables Objet
1
21
temp int
Illustration 1
Variables Objet
0
21
temp int
1
'data sce'
str
illustration1
Variables Objet
temp
2
'data sce'
ecole str
illustration2
Variables Objet
2
21
temp int
ecole
illustration2
Variables Objet
1
21
temp int
1
'data sce'
ecole str
illustration3
Variables Objet
21 'data sce'
temp
[ . , .]
illustration3
Variables Objet
21 'data sce'
temp
[ . , .]
ecole
illustration3
Variables Objet
21 'data sce'
temp
[ . , .]
ecole
'master'
21 'data sce'
temp
[ . , .] [ . , .]
ecole
21 'data sce'
temp
[ . , .] [ . , .]
ecole
'master'
[ . , .] [ . , .]
ecole
[ . , .] [ . , .]
ecole
'master'
Illustration4: deepcopy
Variables Objet
[ . , .] [ . , .]
ecole
[.]
Illustration4: deepcopy
Variables Objet
[ . , .] [ . , .]
ecole
[.]