0% ont trouvé ce document utile (0 vote)
660 vues148 pages

Cours D'informatique MPSI-05-2015 Python

Transféré par

Soro Achille
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
660 vues148 pages

Cours D'informatique MPSI-05-2015 Python

Transféré par

Soro Achille
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Support de cours

Informatique Générale
CM: 30 Heures
TD/TP: 30 Heures

Dr Lambert KADJO 1
[Link]
Informatique
Partie 1: ELÉMENTS D’ARCHITECTURE DES ORDINATEURS - REPRÉSENTATION DES NOMBRES
Chapitre 1 : INTRODUCTION

Partie 2: ALGORITHMIQUE
Chapitre 2 : INTRODUCTION AU LANGAGE DE DESCRIPTION D’ALGORITHME
Chapitre 3 : STRUCTURES DE DONNEES ELEMENTAIRES
Chapitre 4: SOUS-PROGRAMMES : PROCEDURES & FONCTONS

Partie 3: PROGRAMMATION SOUS PYTHON


Chapitre 5: INTRODUCTION AU LANGAGE PYTHON
Chapitre 6 : BASES DU LANGAGE
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE DONNEES
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE
Chapitre 9: APPROFONDISSEMENTS EN PYTHON

2
[Link]
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.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 ([Link]) 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é.
 Python est extensible : On peut l'interfacer avec d'autres langages (C, C++, Delphi, Java…) 3
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.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 ».

 2001 : naissance de la PSF (Python Software Fundation). Les versions se succèdent. Un


grand choix de modules est disponible, des colloques annuels sont organisés, Python est
enseigné dans plusieurs universités et est utilisé en entreprise.

 Fin 2008 : sorties simultanées de Python 2.6 et de Python 3.0

 depuis 2013 : développement des branches 2 et 3 : v2.7.3 et v3.3.0


4
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Quelques implémentations
Plusieurs implémentations existent :

 CPython : Classic Python, codé en C, implémentation portable sur différents systèmes.


 Jython : ciblé pour la JVM (utilise le bytecode de JAVA)
 IronPython : [Link], écrit en C#, utilise le MSIL (MicroSoft Intermediate Language)
 Stackless Python: élimine l’utilisation de la pile du langage C
 Pypy : projet de recherche européen d’un interpréteur Python écrit en Python
 CPython : Classic Python, codé en C, portable sur différents systèmes
 Python3000 : Python 3, la nouvelle implémentation de CPython
 Unladen Swallow est un nouveau projet de Google utilisant les techniques de
compilation JIT de Java. Ce projet multipliera par 5 la vitesse d'exécution de Python.

5
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

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).

De nombreux modules couvrant des domaines très variés :


numpy : algèbre linéaire, matrices, vecteurs, systèmes linéaires...
scipy : probalilité/statistiques, FFT 1D, 2D..., filtrage numérique, images ;
Matplotlib: tracé de courbes ;
os : manipulation des répertoires et des fichiers

6
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Linux


Les éléments nécessaires sont :
 une version de Python comme cités ci-dessus. Notez que les anciennes versions en 2.x sont
incompatibles avec les plus récentes en 3.x.
 un éditeur de texte.
Cependant, on peut utiliser un environnement de développement intégré ou IDE (Integrated
DeveLopment Environment)
 Anjuta ;
 Scientific PYthon Development EnviRonment (abrégé en Spyder) : multiplateforme , libre, orienté scientifique.
 Eric Python IDE
 Geany est un éditeur de texte léger utilisant GTK+ et Scintilla et incluant les fonctions élémentaires
d'un environnement de développement intégré
 IDLE (Integrated DeveLopment Environment) : éditeur et interpréteur Python
 Komodo Edit
 Ninja-IDE
 PIDA
 PyCharm
 Eclipse
 PyScripter
 Python Tools for Visual Studio
 PythonAnywhere
 SourceLair : pour la programmation en ligne dans le cloud.
 Stani's Python Editor
 Wing IDE 7
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Linux


Python est pré-installé sur la plupart des distributions Linux. Cependant, il est possible que
vous n'ayez pas la dernière version en date.
Pour le vérifier, tapez dans un terminal la commande python -V.
 Cette commande renvoie la version de Python actuellement installée sur le système. Il
est très probable que ce soit une version 2.x, comme 2.6 ou 2.7, pour des raisons de
compatibilité.
 Pour installer Python 3.x dont la syntaxe est très proche de Python 2.x mais diffère, il
faut :

1) Cliquer sur download et télécharger la dernière version de Python.


2) Ouvrir un terminal, puis se rendre dans le dossier où se trouve l'archive :
 Décompresser l'archive en tapant par exemple : tar -xzf [Link].bz2 (cette
commande est bien entendu à adapter suivant la version et le type de compression).
 Attendre quelques instants que la décompression se termine, puis se rendre dans le
dossier qui vient d'être créé dans le répertoire courant (Python-3.4.1 par exemple).
 Exécuter le script configure en tapant ./configure dans la console.
 Une fois que la configuration s'est déroulée, il n'y a plus qu'à compiler en
tapant make puis make install en tant que super-utilisateur.
8
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Linux


ou il suffit d’installer les paquets Python en fonction des besoins avec les outils disponibles
- avec l’installeur graphique (logithèque, muon, synaptic...),
- ou avec la ligne de commande (adept, apt-get, yum...) de votre distribution.
Paquets Python 2.7 (Ubuntu 12.04 Precise, Debian Wheezy...)
python2.7 python-numpy python-scipy python-matplotlib python-qt4
Paquets Python 3.x (Ubuntu 14.04 Trusty, Debian Jessie...)
python3 python3-numpy python3-scipy python3-matplotlib python3-pyqt4

Si, par exemple, vous avez installé Python 3.4, vous pouvez y accéder grâce à la commande :

Pour fermer la ligne de commande Python, n'utilisez pas CTRL + C mais CTRL + D.
9
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Windows


 La distribution de base proposée sur [Link] n’inclut pas les modules numpy, scipy, etc.
 Pour l’installation, on peut utiliser un logiciel installateur, qui se charge d’installer les nombreux modules
utiles au calcul scientifique ainsi que les IDE les plus connus (IDLE, Spyder...).

 Installateurs libres (Python scientifique


Python(x,y) pour Python 2,
WinPython scientifique WinPython
pour Python 2 et 3)

 Installateurs propriétaires et gratuits


(Continuum Analytics : Anaconda pour Python 2 et 3,
Enthought Canopy pour Python 2)

10
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Windows


 La distribution de base proposée sur [Link] n’inclut pas les modules numpy, scipy, etc.
 Pour l’installation, on peut utiliser un logiciel installateur, qui se charge d’installer les nombreux modules
utiles au calcul scientifique ainsi que les IDE les plus connus (IDLE, Spyder...).

 Installateurs libres (Python scientifique


Python(x,y) pour Python 2,
WinPython scientifique WinPython
pour Python 2 et 3)

 Installateurs propriétaires et gratuits


(Continuum Analytics : Anaconda pour Python 2 et 3,
Enthought Canopy pour Python 2)

11
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Windows


 Pour l’installation de modules sans installateur
1) Aller sur [Link]
2) Sélectionner la version de Python que vous souhaitez utiliser.
3) On vous propose un (ou plusieurs) lien(s) vers une version Windows : sélectionnez
celle qui conviendra à votre processeur. Si vous avez un doute, téléchargez une version
« x86 ».
4) Installer la version téléchargée.
5) Dans Démarrer > Tous les programmes. Python devrait apparaître dans cette liste

12
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Installation de Python sous Mac


5) Ou dans Démarrer > Tous les programmes > Python 3.4 > Python (Command Line)
ou soit allez dans le menu Démarrer, puis cliquez sur Exécuter et dans la fenêtre qui
s'affiche, tapez simplement « python »
Ou soit tapez le raccourci Windows + R, tapez simplement « python »

Pour fermer l'interpréteur de commandes Python, vous pouvez tapez « exit() » puis appuyer sur la
touche Entrée. 13
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Technique de production de Python


Lorsqu’un programme source est fourni, Python commence par le compiler pour produire
un code intermédiaire (similaire à un langage machine) appelé bytecode, lequel sera
ensuite transmis à un interpréteur pour l'exécution finale.
Pour l'ordinateur, le bytecode est très facile à interpréter en langage machine. Cette
interprétation sera donc beaucoup plus rapide que celle d'un code source.

 Les avantages de cette méthode sont :


L’interpréteur permet de tester immédiatement n'importe quel petit morceau de
programme permettant ainsi de vérifier le bon fonctionnement de chaque composant
d'une application au fur et à mesure de sa construction.
L'interprétation du bytecode compilé est très satisfaisante pour de très nombreux
programmes, y compris graphiques.
Le bytecode est portable. Pour qu'un programme Python ou Java puisse s'exécuter sur
différentes machines, il suffit de disposer pour chacune d'elles d'un interpréteur adapté.
14
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Utilisation d’un IDE: PyScripter

15
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Utilisation d’un IDE: PyScripter


 L’interpréteur : C’est lui qui contient le triple chevron >>> qui est l’invite de Python
(prompt en anglais) et qui signifie que Python attend une commande.
L’esprit d’utilisation de l’interpréteur est un peu le même que celui d’une calculatrice.

 On remarque au passage que la priorité des opérations est bien respectée.

Pour écrire des commentaires (utile dans l’écriture d’un script dans un éditeur de texte), il faut
commencer par le caractère #.

16
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Utilisation d’un IDE: PyScripter


 L’éditeur: On peut y écrire des scripts, c’est-à-dire des programmes petits ou grands.
Lors de la saisie, des propositions sont faites

17
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Utilisation d’un IDE: PyScripter


 L’éditeur

La commande (ou
fonction) 'print( )' écrit à
l’écran une chaine de
caractères (des caractères
entre apostrophes '...' ou
double-quotes "..." et des
nombres ou expressions
algébriques.

18
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Utilisation d’un IDE: Spyder


Spyder est constitué de 3 fenêtres

19
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel

Utilisation d’un IDE: Spyder


 L’éditeur: permet de rédiger des programmes;
La console permet de tester des commandes et renvoie les résultats des programmes
rédigés dans l’éditeur (autres onglets)
L’explorateur avec pour onglets :
 L’inspecteur d’objets qui donne des informations sur l’utilisation des fonctions
activées
 L’explorateur de variables qui donne la liste et les valeurs de toutes les variables qui
ont été crées
 L’explorateur de fichiers qui donne accès au disque dur

20
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON

Le langage Python est constitué :


de mots clefs, qui correspondent à des instructions élémentaires (for, if...) ;
de littéraux : valeurs constantes de types variés (25, 1.e4, ’abc’...) ;
de types intrinsèques (int, float, list, str...) ;
d’opérateurs (=, +, *, /, %...) ;
de fonctions intrinsèques (Built-in Functions) qui complètent le langage.

L’utilisateur peut créer :


 des classes : nouveaux types qui s’ajoutent aux types intrinsèques ;
 des objets : entiers, flottants, chaînes, fonctions, programmes, modules..., instances de
classes définies par l’utilisateur ;
 des expressions combinant identificateurs, opérateurs, fonctions..

21
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.1 CALCULS, OPERATIONS

Opérateurs arithmétiques
Dans le tableau ci-après, sont présentés les symboles utilisés pour les opérations de base.

Opérations Symboles Exemples


Addition + 2 + 5 donne 7
Soustraction - 8 - 2 donne 6
Multiplication * 6 * 7 donne 42
Exponentiation (puissance) ** 5 ** 3 donne 125
Division / 7 / 2 donne 3.5
Reste de division entière % 7 % 3 donne 1
Quotient de division entière // 7 // 3 donne 2
décalage à gauche << 3 << 1 donne 6
décalage à droite >> 3 >> 1 donne 1

NB : Pour une version 2 de Python, la division de deux entiers se fera comme la division
entière.

22
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.1 CALCULS, OPERATIONS

Opérateurs de comparaison et opérateurs logiques


 Opérateurs de comparaison: soit a= 5 et b=8

Opérations Opérateurs Exemples


inférieur strictement à < a <b donne VRAI
inférieur ou égal à <= a <= b donne VRAI
supérieur strictement à > a > b donne FAUX
supérieur ou égal à >= a >= b donne FAUX
égal à == a == b donne FAUX
différent de != a != b donne VRAI

 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 à bi |
complément à 2 ~ 23
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.2 Affectations

Affectations simples
Une affectation se fait en utilisant le signe =

On remarque au passage que, dans l’interpréteur interactif, taper juste var a le même effet
que print(var). Ce n’est pas le cas dans l’éditeur où l’on a besoin de la fonction print pour
afficher un résultat.

24
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.2 Affectations

Affectations multiples
Python permet les affectations multiples:

Avec la notion de tuple


ou de liste, Python
permet aussi les
affectations parallèles:

25
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.2 Affectations

Opérateurs avec affectation

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

26
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.3 Entrée/sortie standard

Entrée standard (clavier)


Python dispose de deux instructions : input() et raw_input() pour pouvoir demander à
l’utilisateur de saisir une chaîne de caractères.
La lecture du clavier (entrée standard) est aussi simple que l'écriture à l'écran.
Toutefois, il faut savoir que python lit du clavier ligne par ligne. Il attend donc toujours
un retour de chariot ou un caractère de fin de fichier avant d'analyser le texte tapé.
 raw_input() : "raw" en anglais veut dire "cru". La chaîne de caractères saisie va donc être
conservée comme une chaîne de caractères.
 NB: Cette fonction utilisée par Python 2.7 a été renommée en input() par Python 3.x.
 input() : cette fonction effectue toujours une saisie en mode texte (la valeur retournée
est une chaîne, c’est-à-dire un type str) dont on peut ensuite changer le type (on dit
aussi transtyper ou caster) avec int, float, etc.

27
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.3 Entrée/sortie standard

sortie standard (écran)


La fonction principale est print() qui permet d’afficher surtout des chaînes de caractères.
Elle se charge d’afficher la représentation textuelle des informations qui lui sont données
en paramètre, en plaçant un blanc séparateur entre deux informations, et en faisant un
retour à la ligne à la fin de l’affichage (le séparateur et la fin de ligne peuvent être
modifiés)
 On peut effectuer un formatage des chaînes de caractères avec la méthode [Link]

Syntaxe:

print("chaîne de formatage contenant des {...}".format(objet1, objet2, ...))

formats signification
.df d décimales, format flottant
.de d décimales, format scientifique
[Link] n caractères avec d décimales, format scientifique
s chaîne de caractères
d entier en base 10
g choisit le format le plus approprié
28
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.4 Entrée/sortie standard

sortie standard (écran)

Le formatage "à la printf du C" peut aussi se faire avec l’opérateur %

29
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables

Noms de variables
 Les noms les plus simples sont constitués de lettres, majuscules ou non, mais attention
cela définit une variable différente.
 Par exemple ces deux variables sont différentes

 Par convention, on utilise uniquement des minuscules pour désigner les variables
simples (ainsi que les noms de fonctions);
 les majuscules sont réservées en principe pour d'autres sortes de variables, comme
les noms de classe, les constantes.

 Pour des raisons de lisibilité, il est également possible d'utiliser le tiret bas _ dans les
noms de variables. Par exemple, on préféra age_moyen à AgeMoyen.

30
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables

Noms de variables
NB :
 Le premier caractère ne peut pas être un chiffre.
 Il est, en théorie au moins, 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

31
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables

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

32
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables

Noms de variables
Mots clefs du langage

33
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables

Noms de variables
Mots-clés du langage

34
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Les types de données entiers


Le type int
Le type int n’est limité en taille que par la mémoire de la machine alors que dans la plupart
des autres langages les entiers sont codés sur un nombre fixe de bits et ont un domaine de
définition limité.
L’entier peut être écrit simplement en décimal (2015), en binaire (0b11111011111), en octal
(0o3737), en hexadécimal (0x7DF)
Un entier écrit en base 10 (par exemple 2015) peut se représenter en binaire, octal et
hexadécimal en utilisant bin () pour la conversion binaire, oct() pour la conversion octal,
hex() pour la conversion hexadécimal

 La fonction int() convertit un nombre d’une base B (défaut : 10) en base 10

35
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Les types de données entiers


Le type bool
En Python, les valeurs des variables booléennes sont notées False et True. Les opérateurs
sont notés respectivement not, and et or.
Lorsque l'on saisit les conditions suivantes les valeurs retournées peuvent prendre 2
valeurs : True ou False. Elles sont de type booléen 'bool'

36
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Les types de données entiers


Le type bool
Conversion en booléen : bool()
 La fonction de conversion bool() convertit une valeur de n'importe quel type en un
booléen, selon les règles suivantes :
 Un nombre 'int' ou 'float' est converti à True s'il est non nul, à False sinon.
 Une chaîne de caractères 'str' est convertie à True si elle est non vide, à False si
c'est la chaîne vide : ""

37
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Les types de données entiers


Le type bool
Conversion en booléen : bool()
 La fonction de conversion bool() convertit une valeur de n'importe quel type en un
booléen, selon les règles suivantes :
 Un nombre 'int' ou 'float' est converti à True s'il est non nul, à False sinon.
 Une chaîne de caractères 'str' est convertie à True si elle est non vide, à False si
c'est la chaîne vide : ""

38
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Les types de données flottants


Le type float
Un float est noté avec un point décimal (pas avec une virgule) ou en notation exponentielle
avec un « e » symbolisant le « 10 puissance » suivi des chiffres de l’exposant (exemple
14.023e32).
 Ils supportent les mêmes opérations que les entiers. Ils ont une précision finie limitée.
 On peut accéder à ces valeurs minimales et maximales pour les flottants comme ceci

NB : L’import du module math autorise toutes les opérations mathématiques usuelles. 39


[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Les types de données flottants


Le type complex
Les complexes sont écrits en notation cartésienne formée de deux flottants. La partie
imaginaire est suffixée par j. Par exemple

Un module mathématique spécifique (cmath) leur est réservé.

40
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base

Chaînes de caractères
 On utilise les guillemets ou les simples côtes pour former les chaines sur une seule ligne, triple
guillemet pour les chaines sur plusieurs lignes.
Pour afficher une chaîne de caractères, il faut utiliser la fonction print.

 NB : Depuis la version 3 de Python, la commande print est considérée comme une fonction dont il faut
alors mettre les arguments entre parenthèses
NB : la chaîne de caractères vide s’écrit "" ou ''

Opérations :
Longueur de la chaine avec len(var_chaine)
Concaténation de chaines avec + (exemple : var_chaine1 + var_chaine2)
Répétition d’une chaine avec * (exemple : var_chaine * 3)
 lower(), upper(), capitalize() et swapcase() sont des méthodes (fonctions membres) retournent
respectivement une chaîne en minuscule, en majuscule, en minuscule commençant par une
majuscule, ou en casse inversée (exemple : var_chaine.upper())

41
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python

Création
 C’est une structure qui peut être très utile. Une liste peut contenir des données de types différents.

 c'est un objet de type list qui permet de collecter des éléments : données de type
quelconque : int, float, str, bool, etc., ou d'autres listes..
 Une liste est créée à l'aide d'une affectation.
 Ses éléments sont entre crochets [.].
 Les éléments d'une liste s'obtiennent grâce à leur indice entre crochets.
 La numérotation des éléments de la liste commence à 0.
 La méthode [Link]() On peut vouloir ordonner une liste de nombres dans l’ordre croissant
 La méthode [Link](.) permet d’ajouter un nombre fourni en argument à la liste, dans le
sens d’agrandir la liste d’un élément.
 La fonction len(liste) prend en argument une liste et retourne son nombre d‘éléments: longueur
de la liste fournie en argument.
 la fonction sum(liste) prend en argument une liste et retourne, lorsque c'est possible, le résultat
de l'opération '+' sur ses éléments;
 La fonction type(liste) donne le type.
 L'indice -1 permet d'obtenir le dernier élément. C'est plus simple que liste[len(liste) - 1]. L'indice
-2 l'avant-dernier, etc...
 Un indice qui n'est pas compris entre -len(liste) et len(liste)-1 produit une erreur 'IndexError'
42
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python

Création

43
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python

Création
Les éléments d'une liste sont des valeurs de différents types, celles qu'on lui a affectées.
 Une liste de listes permet de constituer un tableau bi-dimensionnel, tri-dimensionel, etc.

44
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python

Création
 Les listes sont des objets modifiables (on dit aussi mutables) : on peut modifier leurs
éléments.
On modifie un élément de la liste en lui affectant une nouvelle valeur (de n'importe quel
type, simple ou complexe).

45
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python

Création d’une liste avec la fonction range()


 La fonction range() permet d’obtenir des listes toutes faites.
 permet d’obtenir une classe représentant une séquence d’entiers.
 Avec un argument entier n, range(n) retourne la liste des n premiers entiers

Avec deux arguments entiers m,n, range(m,n) retourne la liste des max(0; n − m) entiers
consécutifs qui sont m ⩽ . < n.

Avec trois arguments entiers m, k, n, range(m, n, k) retourne la liste des entiers de la


forme m+k*p avec p entiers naturels qui sont compris entre m (inclus) et n (exclus).

46
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles

L’instruction if *else]
Test if [else] : Mot clé if qui signifie « si » en anglais. La syntaxe est:
La condition est évaluée en booléen.
 Si elle a valeur True, le premier bloc
d'instruction est exécuté, le deuxième ne
l'est pas, puis l'exécution du programme
se poursuit.
 Si elle a valeur False le deuxième bloc
d'instruction est exécuté (le premier ne
l'est pas), puis l'exécution du programme
se poursuit

.
NB: - L’instruction else est optionnelle.
- Le signe deux points « : », qui termine la condition est indispensable; Python affichera
une erreur de syntaxe si il est omis.

47
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles

L’instruction if *else]
Exemples

48
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles

L’instruction if *else]

49
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles

L’instruction if *elif] [else]


La syntaxe de tests de si imbriqués : Ces tests imbriqués s‘écrit à l'aide
d'une seule structure de test :

Exemple
NB: elif et else sont optionnels.
elif peut être utilisé plusieurs fois
dans une structure de test :
if ...
elif ...
elif ...
else ….

50
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle

L’instruction while
L'instruction while permet de répéter une séquence d'instruction, en boucle, tant qu'une
condition est vérifiée.

Généralement, la condition s‘évalue en un booléen

Exemple 1: Table de multiplication

51
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle

L’instruction while
Exemple 2: Saisie non vide

52
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle

Boucle for

53
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle

Boucle for

54
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle

Boucle for
Nous souhaiterions créer la liste des carrés des entiers compris entre 0 et 10.
Pour cela on utilisera la méthode [Link]() appliquée aux objets de type liste qui
permet d'ajouter un élément en queue de liste

55
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions

Définition et syntaxe
Définition: Une fonction est un ensemble d’instructions regroupées sous un nom et s’exécutant
à la demande
Syntaxe: La définition d’une fonction est composée :
 du mot clé def suivi de l’identificateur de la fonction, de parenthèses entourant les paramètres de
la fonction séparés par des virgules, et du caractère « deux points » qui termine toujours une
instruction composée ;
 d’une chaîne de documentation indentée comme le corps de la fonction ;
 du bloc d’instructions indenté par rapport à la ligne de définition, et qui constitue le corps de la
fonction.
 Le bloc d’instructions est obligatoire. S’il est vide, on emploie l’instruction pass. La
documentation (facultative) est fortement conseillée

56
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions

Passage des arguments


Passage par affectation : chaque argument de la définition de la fonction correspond, dans
l’ordre, à un paramètre de l’appel.
La correspondance se fait par affectation des paramètres aux arguments

57
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions

Un ou plusieurs paramètres, pas de retour: les procédures


Dans ce cas, la fonction, appelée procédure, renvoie implicitement la valeur None

58
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions

Un ou plusieurs paramètres, un ou plusieurs retours


Une fonction vaut quelque chose, une procédure fait quelque chose.

59
[Link] Dr Lambert KADJO ****** 2014-2015
Informatique
Partie 1: ELÉMENTS D’ARCHITECTURE DES ORDINATEURS - REPRÉSENTATION DES NOMBRES
Chapitre 1 : INTRODUCTION

Partie 2: ALGORITHMIQUE
Chapitre 2 : INTRODUCTION AU LANGAGE DE DESCRIPTION D’ALGORITHME
Chapitre 3 : STRUCTURES DE DONNEES ELEMENTAIRES
Chapitre 4: SOUS-PROGRAMMES : PROCEDURES & FONCTONS

Partie 3: PROGRAMMATION SOUS PYTHON


Chapitre 5: INTRODUCTION AU LANGAGE PYTHON
Chapitre 6 : BASES DU LANGAGE
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE DONNEES
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE
Chapitre 9: APPROFONDISSEMENTS EN PYTHON

60
[Link]
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs
DONNEES

Définitions
 Tous les conteneurs Python sont des objets itérables
on peut les parcourir avec une boucle for.

On distingue deux grands groupes:


 Collections ordonnées : les séquences (sequences)
 les listes list
les tuples tuple
les chaînes de caractères str
 Collections sans ordre
les dictionnaires dict
les ensembles set

61
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Sous-liste (slicing)
Soit L = [10, 11, 12, 13, 14], une liste
 liste1 = L[i:j] crée une nouvelle liste liste1, sous-liste de
L, dont les éléments sont ceux de L allant de l'indice i
inclus à l'indice j exclus.
On l'appelle une tranche (slice en anglais) de la liste.
 Les indices entre crochets peuvent sortir de la plage
d'indice de la liste : par exemple:
 liste2 = L[0:100] # tranche des indices de 0 à 100

62
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Sous-liste (slicing)
Soit L = [10, 11, 12, 13, 14], une liste
 liste3 = L[i:j:k] crée une nouvelle liste liste1, sous-liste
de L, dont les éléments sont ceux de L allant de l'indice
i inclus à l'indice j exclus et de pas k.
 Si i et j non précisés, alors
si Pas > 0 : indice départ = 0 ; indice arrivée = len(L)
si Pas < 0 : indice départ = len(L)-1 : indice arrivée = -1

63
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Copie de listes
Une liste en python ne contient que l'adresse mémoire où sont stockés ses éléments:
 une belle illustration de pointeur.
 Il faut donc prendre garde à la façon dont python copie une liste

 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].

Objet modifié en mémoire


Donc, effectuer une opération
10 11 12 13 14 15 sur L revient à effectuer une
opération sur L_prim, puisque
dans les deux cas, on effectue
l'opération sur
l’objet [10, 11, 12, 13, 14
64
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Copie de listes
Comment faire une copie avec des emplacements mémoires différents?

 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

65
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Copie de listes
Comment faire une copie avec des emplacements mémoires différents?

 Exemple 3: Utilisation de la fonction copy() du module copy.


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

66
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Copie de listes
Comment faire une copie avec des emplacements mémoires différents?

 Exemple 4: Utilisation 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

67
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Copie de listes
Comment faire une copie de
liste de listes avec des
emplacements mémoires
différents?

Utilisation de la fonction
deepcopy() du module copy

68
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Compréhension de liste
On peut définir une liste en utilisant des mots-clés tels que for, in et if comme on définit un
ensemble en maths 'par compréhension' : ou
NB: contrairement aux ensembles en mathématique, pour Python, une liste est ordonnée et
peut contenir plusieurs fois le même élément.

 la syntaxe est [f(x) for x in ma_liste] correspond à {f (x )∣ x ∈ ma_liste }


 Ainsi, une fois qu’une fonction est définie (numérique ou non), elle peut être appliquée
au nombres de la liste de départ, les images de cette fonction constitueront la liste
d’arrivée.
 On obtient le même résultat en mettant directement une expression en x à la place
de f(x)
 Exemple 1: Liste des carrés des éléments des dix premiers entiers

69
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les listes : « list »


Compréhension de liste
 Exemple 2: Liste des carrés des éléments des dix premiers entiers : utilisation d’une fonction

 Filtrage et application d’une fonction


[f(x) for x in liste if Condition(x)] correspond à {f (x )∣ x ∈ liste tel que Condition(x )}

Exemple: Carré des nombres impairs inférieurs à 10

70
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les chaînes de caractères : « str »


 Les types list (listes) et str (chaines de caractère) sont des structures de données de
type séquentielles alors que int, float, bool sont des types scalaires.
Tous les objets de type séquentiel ont en commun les opérations ci-dessous:
Opérations Significations
s[i] élément d'indice i de s, avec i un entier
min(s) plus petit élément de s
max(s) Plus grand élément de s
s[i:j] Tranche de i (inclus) à j (exclus), avec i, j sont des entiers
s[i:j:k] Tranche de i à j par pas de k, avec i, j, k sont des entiers
len(s) Longueur de s
x in s True si x est dans s, False sinon
x not in s True si x n'est pas dans s, False sinon
s+t Concaténation de s et t, où s et t sont des objets séquentiels de même type.
s*n, n*s Concatenation de n copies de s, avec n, un entier
[Link](x) Indice de la 1ere occurrence de x dans s
[Link](x) Nombre d'occurrences de x dans s
71
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les chaînes de caractères : « str »


 Cependant, les chaines de caractères ne sont pas des objets modifiables.
 Ainsi changer un élément produit une erreur TypeError :

 Fonctions propres au type string


 [Link]() et [Link]() : retournent True si nom ne contient respectivement que des majuscules/minuscules
 [Link]() : retourne True si seule la première lettre de chaque mot de nom est en majuscule
 [Link](), [Link](), [Link]() et [Link]() : retournent True si nom ne contient respectivement
que des caractères alphanumériques, alphabétiques, numériques ou des espaces.
 [Link](prefix[, start[, stop]]) et [Link](suffix[, start[, stop]]) testent si la sous-chaîne définie
par start et stop commence respectivement par prefix ou finit par suffix
 [Link](), [Link](), [Link]() et [Link]() : retournent respectivement une chaîne en
minuscule, en majuscule, en minuscule commençant par une majuscule, ou en casse inversée

72
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les chaînes de caractères : « str »


 Fonctions propres au type string
 [Link]([tabsize]) : remplace les tabulations par tabsize espaces (8 par défaut).
 [Link](width[, fillchar]), [Link](width[, fillchar]) et [Link](width[, fillchar]) : retournent respectivement
une chaîne centrée, justifiée à gauche ou à droite, de largeur maximale fixée par le paramètre width complétée par le
caractère fillchar (ou par l'espace par défaut)
 [Link](width) : complète nom à gauche avec des 0 jusqu'à une longueur maximale de width
 [Link]([chars]), [Link]([chars]) et [Link]([chars]) : suppriment toute les combinaisons de chars (ou
l'espace par défaut) respectivement au début et en fin, au début, ou en fin d'une chaîne;
 [Link](sub[, start[, stop]]) : renvoie l'indice de la chaîne sub dans la sous-chaîne start à stop, sinon renvoie -1.
 [Link]() effectue le même travail que find en commençant par la fin.
 [Link]() et [Link]() font de même que find mais produisent une erreur (exception) si la chaîne n'est pas
trouvée.
 [Link](old[, new[, count]]) : remplace count instances (toutes pas défaut) de old par new
 [Link](seps[, maxsplit]) : découpe la chaîne en maxsplit morceaux (tous par défaut).
 [Link]() effectue la même chose que split en commençant par la fin
 [Link]() effectue ce travail de split avec les caractères de fin de ligne.
 [Link](seq) : concatène les chaînes du conteneur seq en intercalant la chaîne sur laquelle la méthode est appliquée

73
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES

les tuples : « tuple »


 En français t-uplet. Ce sont des objets séquentiels.
 On les définit par la liste de leurs éléments (comme pour une liste mais) entre parenthèses (.).
 un tuple est une collection d'éléments séparés par des virgules.
 contrairement aux listes, les tuples sont des objets non-modfiables (non-mutables)
 Les parenthèses sont optionnelles (il faut toujours au moins une virgule pour définir un tuple);

74
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES

les dictionnaires : « dict »


 Ce sont des structures de données qui ne sont pas séquentielles (non ordonnées)
 un élément n'est plus repéré à l’aide d'un indice (un nombre entier) mais à l'aide d'un
nom constituant sa clef.
 cette clé pourra être alphabétique, numérique ou même d’un type composite sous
certaines conditions (un t-uplet).
 les éléments mémorisés dans un dictionnaire peuvent être de n’importe quel type (des
nombres, des chaînes, des listes, des tuples, des dictionnaires, et même aussi des
fonctions)
 Cette structure de donnée s'appelle en python un dictionnaire et dans d'autres langages
un enregistrement.

NB: Les crochets délimitent les listes, les parenthèses délimitent les tuples et les accolades
délimitent les dictionnaires.

75
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES

les dictionnaires : « dict »


 Création d’un dictionnaire
 un dictionnaire apparaît dans la syntaxe Python sous la forme d’une série d’éléments
séparés par des virgules, le tout étant enfermé entre deux accolades. Chacun de ces
éléments est lui-même constitué d’une paire d’objets : un index (la clé) et une valeur,
séparés par un double point: on parle de la paire clé-valeur.

Créons ce dictionnaire
Cote_d_Ivoire = ,'Capitale' : ‘Yamoussoukro', 'Superficie' : 322462, 'Population' : 25000000, 'Langue' : 'Français‘-

Création d’un dictionnaire vide

76
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES

les dictionnaires : « dict »


 Manipulation d’un dictionnaire

Accès à un élément se fait à l'aide de sa clef


L'accès à un élément se fait à l'aide de sa clef

Ajout d’un élément dans un dictionnaire


Pour ajouter de nouveaux éléments à un dictionnaire, il suffit de créer une nouvelle paire
clé-valeur.

 Suppression d’un élément d’un dictionnaire


Pour supprimer un élément d’un dictionnaire, il suffit d’utiliser l’instruction intégrée del().

77
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES

les dictionnaires : « dict »


 Manipulation d’un dictionnaire

La taille d’un dictionnaire

 différentes méthodes sur les dictionnaires


 Cote_d_Ivoire.keys() : renvoie la séquence des clés utilisées dans le dictionnaire Cote_d_Ivoire.
Cette séquence peut être utilisée telle quelle dans les expressions, ou convertie en liste ou en tuple
si nécessaire, avec les fonctions intégrées correspondantes list()et tuple() :

78
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES

les dictionnaires : « dict »


 Manipulation d’un dictionnaire

 Différentes méthodes sur les dictionnaires

Cote_d_Ivoire.values() : retourne la liste des valeurs du dictionnaire Cote_d_Ivoire

Cote_d_Ivoire.items() retourne la liste des champs (key,value) de Cote_d_Ivoire

 Cote_d_Ivoire.copy() retourne une copie du dictionnaire telle que vue avec les listes.

79
[Link] Dr Lambert KADJO ****** 2014-2015
Informatique
Partie 1: ELÉMENTS D’ARCHITECTURE DES ORDINATEURS - REPRÉSENTATION DES NOMBRES
Chapitre 1 : INTRODUCTION

Partie 2: ALGORITHMIQUE
Chapitre 2 : INTRODUCTION AU LANGAGE DE DESCRIPTION D’ALGORITHME
Chapitre 3 : STRUCTURES DE DONNEES ELEMENTAIRES
Chapitre 4: SOUS-PROGRAMMES : PROCEDURES & FONCTONS

Partie 3: PROGRAMMATION SOUS PYTHON


Chapitre 5: INTRODUCTION AU LANGAGE PYTHON
Chapitre 6 : BASES DU LANGAGE
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE DONNEES

Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE


Chapitre 9: APPROFONDISSEMENTS EN PYTHON

80
[Link]
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.1 Les modules

Définitions
Un module est un fichier ayant pour extension .py permettant de définir des éléments de
programme réutilisables (définitions de constantes et fonctions).
Tout programmeur python peut réaliser un module.

NB: Lorsqu’on parle du module, on omet l’extention : le module accueil est dans le fichier
[Link]

 Instruction import
Cette instruction charge et exécute le module indiqué s’il n’est pas déjà chargé.
 L’ensemble des définitions contenues dans ce module deviennent alors disponibles : variables
globales, fonctions, classes.

 Suivant la syntaxe utilisée, on accède aux définitions du module de différentes façons :


 l’instruction import <nom_module> donne accès à l’ensemble des définitions du module importé
en utilisant le nom du module comme espace de nom
 On peut définir un alias à l'aide de l'instruction as
 l’instruction from <nom_module> import nom1, nom2, … donne accès directement à une
sélection choisie de noms définis dans le module.
81
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.1 Les modules

Définitions
Exemple 1
Exemple 2

Exemple 3
Exemple 4

82
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.1 Les modules

Exemple : le module random


Voici quelques fonctions fournies par le module random:

 randrange(a,b,k) : Choisit un entier aléatoirement dans range(a,b,k)


 randint(a,b) : Choisit un entier aléatoirement dans [[a; b]]
 choice(List) : Choisit un entier aléatoirement dans la liste List
 random() :Choisit un float aléatoirement dans [0; 1[
 uniform(a,b) : Choisit un float aléatoirement dans [a; b[

83
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Généralités
 Pour effectuer des calculs numériques au moins 3 solutions logicielles efficaces sont
envisageables :

 Le logiciel commercial matlab.


 Il effectue tout type de traitement numérique.
Très complet, mais payant, et couteux.

 Le logiciel libre scilab.


 Gratuit, open-source,
 fait les mêmes choses que matlab dans une syntaxe quasiment identique.
 scilab et matlab manipulent tous deux des matrices numériques (données,
images, son,...).

 le module pylab de Python.


 contient les modules numpy, scipy, ou matplotlib que l'on peut aussi utiliser seuls.

84
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Les modules scientifiques


 Il existe de nombreux modules scientifiques sous python dont les plus utilisés sont :
numpy : Puissant outil pour créer, manipuler, et appliquer de nombreuses opérations sur
des tableaux de nombres (matrices). Stable et bien documenté :
[Link] (en anglais).
scipy : Fonctions mathématiques puissantes s'appliquant aux tableaux générés par numpy.
 C'est la boîte à outil numérique pour les tableaux numpy.
 Elle contient des opérations spécifiques (algèbre linéaire, statistiques,...) de
manipulation de tableaux, de plus haut niveau que celles de numpy.
[Link] (en anglais).
matplotlib : Permet le tracé de graphes de fonctions (en 2D, parfois en 3D).
[Link] (en anglais).
 SymPy est une bibliothèque spécialisée dans le calcul formel à l’instar de Mapple ou
Mathematica
 permet de faire du calcul arithmétique formel basique, de l’algèbre, des
mathématiques différentielles, de la physique, de la mécanique.
Unum : bibliothèque permettant de calculer en tenant compte des unités du système SI
(Système International d’unités).
85
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
 Le module numpy est la boîte à outils indispensable pour faire du calcul scientifique avec
Python.
Pour modéliser les vecteurs, matrices et, plus généralement, les tableaux à n dimensions,
numpy fournit la fonction array().
 A la différence des listes qui pourraient elles aussi servir à représenter des vecteurs
(resp. des matrices) :
— Les tableaux numpy sont homogènes ( constitués d’éléments du même type).
— La taille des tableaux numpy est fixée à la création. On ne peut donc augmenter ou
diminuer la taille d’un tableau comme on le ferrait pour une liste.
— Le format d’un tableau numpy et la taille des objets qui le composent étant fixé,
l’empreinte du tableau en mémoire est invariable et l’accès à ses éléments se fait en
temps constant.
— Les opérations sur les tableaux sont optimisées en fonction du type des éléments,
et sont beaucoup plus rapide qu’elles ne le seraient sur des listes équivalentes.
La fonction arange() crée une matrice ligne de façon assez analogue à la façon dont
range() crée une liste, à ceci près que les coefficients ne sont pas forcement entiers
 On peut appliquer sur les tableaux de nombreuses opérations arithmétiques, certaines
étant comprises terme à terme sans utiliser de boucle.
86
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
 Exemples

87
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
 Comme il y quelques subtilités dans la fonction range et arange quant au dernier élément,
Pour éviter tout désagrément la fonction linspace(premier,dernier,n) renvoie
un array commençant par premier, se terminant par dernier avec n éléments
régulièrement espacés.

88
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
 Exemple: Ici, on définit un tableau position de 10 lignes et 2 colonnes, formant des
positions aléatoires. Les vecteurs colonnes x et y sont extraits du tableau position.

89
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
 On accède aux éléments d'un tableau comme les listes en python, grâce à un indice entre
crochets.
 On peut appliquer du slicing.
 Le type d'une matrice s'obtient grâce à la fonction shape(), son nombre d’élément grâce à
la fonction size().
 La fonction reshape() ou flatten() permet de changer la forme (=type) d'une matrice (transformer
un array bi-dimensionnel en un array uni-dimensionnel .
L’instruction [Link]() renvoie une copie de v.
 la syntaxe de reshape [Link](array,dimension)
 Le produit matriciel s'obtient à l'aide de la fonction dot().
 Si le deuxième argument est une matrice ligne, dot() la traitera si besoin est comme une matrice
colonne, ou vecteur, en la transposant.
 Pour effectuer le produit scalaire de 2 "vecteurs" utiliser la fonction vdot()
 La fonction transpose() permet d'obtenir la transposée
 le sous-module linalg contient, entre autres :
 la fonction inv() permettant d’obtenir l'inversion de matrice.
 la fonction det() retourne le déterminant d'une matrice.
La fonction solve(A,b) résout le système linéaire de matrice A et de second membre b (vecteur ou
ligne). 90
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Exemple 1: Accès aux éléments de la matrice A

91
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Exemple 2: Slicing, et nombre d’éléments d’une matrice

Exemple 3: Une autre méthode d’extraction consiste à


écrire v[b] où b est un tableau
d’entiers qui correspondra
aux indices à extraire et v un
vecteur. Pour les matrices
c’est B[b,c] et on prend les
indices de ligne dans b, les
indices de colonnes dans c,
successivement

92
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Exemple 3: Le produit matriciel avec la fonction dot()

93
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Exemple 4: transpose()

94
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Exemple5: dot() et linalg

Pour élever une matrice carrée A à une puissance N ,


on pourrait coder comme ceci:
 Dans cet exemple, à la sortie, B contient AN

 De même, A** -1 se fait terme à terme . Cela


produit une erreur ici (division par 0) alors que la
matrice est inversible.
 Le sous module linalg de numpy contient des
fonctions spécifiques telles que la fonction inv()
permettant de réaliser l’inversion de matrice, la
fonction matrix_power() pour réaliser AN

95
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Exemple système linéaire: Résoudre le système linéaire :

96
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Numpy propose le type mat comme matrice, exclusivement un tableau bi-dimensionnel. Il
retourne un objet de type array. Cela permet de saisir simplement les matrices tel quecela
est fait dans Matlab et de faire le produit matriciel par le simple symbole *

 Tout objet array est convertible en type mat et


réciproquement (sous la condition que le tableau (array)
soit {uni,bi}-dimensionnel)

97
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
 Matrices particulières

 [Link](n) , respectivement [Link]((n,p)): donne un vecteur nul de taille n, resp. une


matrice nulle de taille n, p

[Link](n) ou identity(n) (respectivement [Link](n,p)): matrice de taille n (respectivement


une matrice de taille n,p) avec des 1 sur la diagonale et des zéros ailleurs

 [Link](n) (respectivement [Link]((n,p))) : vecteur de taille n, (respectivement matrice de


taille n,p ) rempli(e) de 1

[Link](v) : matrice diagonale dont la diagonale est constituée des coordonnées du vecteur v

[Link](v,k): matrice dont la « diagonale » décalée de k, un entier relatif, est constituée des
coordonnées du vecteur v (k est un entier relatif)

[Link](n) (respectivement [Link](n,p)): vecteur (taille n) (respectivement


matrice (taille n,p) ) à coefficients aléatoires uniformes sur [0,1[
98
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy

99
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy

100
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module numpy
Extraction de sous-matrices
Syntaxe Valeur de retour
[Link] où A est une matrice Retourne les dimensions de A sous forme de tuple.
A[i][j] où A est une matrice, i et j deux entiers Extrait le coefficient d’indice (i+1, j+1) de A
A[: , i] où A est une matrice, i un entier Extrait la i+1-ème colonne de A sous forme de
matrice ligne
A[: , :i] où A est une matrice, i un entier Extrait les i premières colonnes de A sous forme
de matrice
A[: , i:] où A est une matrice, i un entier Extrait les i+1 dernières colonnes de A sous forme
de matrice
A[: , i:j+1] où A est une matrice, i et j deux entiers Extrait de la i-ème à la j-ème colonne de A sous
forme de matrice
A[i , :] où A est une matrice, i un entier Extrait la i+1-ème ligne de A sous forme de
matrice ligne

101
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
 Matplotlib = Mat (pour Matlab) + plot (pour Tracer) et Lib (pour Librarie)

 bibliothèque qui, combinée avec les bibliothèques python de calcul scientifique numpy et scipy,
constitue un puissant outil pour tracer et visualiser des données principalement en 1D et 2D.
 Utilise des tableaux NumPy (ou des listes) pour générer ces graphiques
 Il s’appuit sur une syntaxe très proche de celle de MatLab pour des tracés graphiques
 Sauvegarde des figures sous différents formats : pdf , ps, png,...
 Graphes facilement intégrables dans une interface graphique utilisateur (GUI)
 Pour utiliser Matplotlib avec Idle, on peut importer la bibliothèque pylab qui contient numpy et
Matplotlib
 Pour le simple tracé de courbes nous n'utiliserons que le sous-module pyplot, importe,
avec alias, à l'aide de l’une des deux commandes

Équivaut à
102
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib

103
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions essentielles de pyplot
 [Link]() ou [Link](block=False): déclenche l’affichage à l’écran en mode bloquant
(stoppe l’exécution du script en cours jusqu’à ce que vous ayez fermé la fenêtre
d’affichage) ou non bloquant.
 Cette fenêtre d’affichage permet de faire une multitude de choses en mode interactif, notamment
de zoomer sur une partie de la figure, enregistrer.

 [Link](x,y, options): permet de représenter des fonctions en reliant par une ligne brisée
les couples de points (x[i],y[i]) successifs contenus dans les deux tableaux numpy à une
dimension x(abscisses) et y (ordonnées) de même taille
 ces points du plan sont reliés entre eux de façon ordonnée par des segments et la couleur change
pour chaque nouvelle courbe.
 plus on prendra de points intermédiaires, plus le tracé sera fidèle à l’allure théorique;
 Le deuxième paramètre peut être une fonction
 On peut créer une fonction autre que celles qui existent déjà dans numpy pour la tracer
 Le troisième paramètre (options) est facultatif, il permet de choisir l'apparence du trait, l‘épaisseur,
la couleur, etc., entre quotes.
 Il est possible de superposer deux courbes sur le même graphique avec la commande
[Link](x1,y1, option1, x2,y2, option2).
 y1 et y2 peuvent être des fonctions numpy ou personnelles
104
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions essentielles de pyplot
 [Link](x,y, options)
 Options de la fonction plot()
 Les couleurs peuvent être décrites par :
 une lettre prédéfinie: b (bleu), g (vert), r (rouge), c (cyan), m(magenta) y ( jaune), k(noire), w (
blanc)
 une valeur entre 0 et 1 pour un niveau de gris (color = valeur)
 un tuple de 3 valeurs entre 0 et 1 pour un style RVB, ( color=(R,V,B))
 un marqueur html en hexadécimal (color=#eeef )
 Les styles de lignes (qui relient les points) :
 `-' (ligne continue), ‘--’ (ligne de tiret), `-.' (point tiret), `:' (dotted), ‘’ ou ‘ ‘ ou None (rien)
 linewidth=valeur (ou lw=valeur): pour préciser la largeur des traits
 Les styles des marqueurs de point :
 ‘.’ (point), `,' (pixel), `o' (rond), `v' (triangle down), `^' (triangle up), `s' (carré), '*‘( étoile), d
ou D (losange), ‘+’(croix)
 markersize=valeur
 label = ‘libellé pour legende’

105
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions essentielles de pyplot
 [Link](n,m, k): permet de subdiviser la fenêtre en n ∗ m cases,
 la valeur n spécifie le nombre de lignes
 la valeur m spécifie le nombre de colonnes
 La valeur k spécifie dans quelle case on désire faire un graphique
 Ces cases sont numérotées de gauche à droite et de haut en bas

106
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions essentielles de pyplot
 [Link](« [Link]"): permet de sauvegarder la figure en cours dans le fichier
[Link].
 Utile pour circonvenir à la limitation précédente d’arrêt du script lors de l’affichage.
 Par défaut le format est PNG.
 Il est possible d’augmenter la résolution, la couleur de fond , l’orientation, la taille
(a0, a1, lettertype, etc) et aussi le format de l’image.
 Si aucun format n’est spécifié, le format est celui de l’extension dans
“[Link]” (où “ext” est “eps”, “png”, “pdf”, “ps” ou “svg”).
 Il est toujours conseiller de mettre une extension aux noms de fichier ;
 On peut donc faire [Link](‘monimage',format='pdf') sauvegarde “monimage”
(sans extension !) au format “pdf”

 [Link](): efface la figure en cours (clf pour « CLear Figure ») car plt continue d’ajouter des
éléments à la même figure tant qu’on ne lui a pas dit d’arrêter. Or, il peut arriver que l’on
veuille représenter plusieurs graphiques différents issus des résultats d’un même calcul.
 Il convient donc de penser à réinitialiser les choses avant de commencer à dessiner le
prochain graphique. 107
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions de pyplot pour la mise en forme de graphique
 [Link]([xmin,xmax,ymin,ymax]) ou [Link](‘equal’): repère quelconque ou repere orthonormé
 [Link](xmin,xmax) et [Link](ymin,ymax) permettent de préciser que l’on souhaite l’affichage
des absisses entre xmin et xmax et l’affichage des ordonnées entre ymin et ymax.

 [Link](tx): Spécifie les graduations des abscisses qui vont figurer dans le graphique, où
tx est un tableau de valeurs ordonnées
 [Link](ty): Spécifie les graduations des ordonnées qui vont figurer dans le graphique
où ty est un tableau de valeurs ordonnées

 [Link](num) : permet de sélectionner différentes figures dans un même script. Les


instructions précédant cette commande ne concernent pas la figure précisée.
 Une figure peut être stockée dans une variable (fig1 = plt .figure () ) permettant
ensuite d’agir sélectivement sur la figure de son choix

 [Link](T rue) : permet d'ajouter ou d'enlever la grille de fond


 [Link] () 108
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions de pyplot pour la mise en forme de graphique
 [Link]((g1,g2, …,gn), ("texte1", "texte2",…,"texte-n")): fournit une légende pour les
graphe g1,g2, …,gn construit à partir de la commande gi=[Link]()

 [Link](loc = 'upper right') : affiche la légende en utilisant le paramètre label d'un plot
et en précisant la localisation de cette légende donnée sur la figure.

 [Link]('axes des x') : met un label sur l'axe des abscisses


 [Link]('axes des y') : met un label sur l'axe des ordonnées

 [Link](‘ libellé ou titre de graphe’ ): met un titre à la figure

Ces commandes ci-dessus retournent un objet de type text qui peut être référencé pour en
changer les propriétés a postorieri (taille de la police, orientation,
[Link] en utilisant la commande
[Link](ref, liste_propriétés_à_modifier): changer une propriété d'un objet 109
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Fonctions de pyplot pour la mise
en forme de graphique

legend((’courbe de sin(x)’, ‘courbe de cos(x)’), ‘center left’)

ou

legend((’courbe de sin(x)’, ‘courbe de cos(x)’), 6)

110
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
Exemple: Représentation de trajectoires

111
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
 Le sous-module animation

L’animation peut etre utilisée pour


 comprendre les systemes évoluant dans le temps
 comprendre les solutions de certaines équations différentielles
 impressionner le monde

 depuis la version 1.1 de Matplotlib, des outils d’animation ont été ajoutés à la
bibliothèque matplotlib
 pour les utiliser, il faut importer le sous-module animation

[Link] 112
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
 Le sous-module animation: utilisation de la fonction
FuncAnimation
Importer les modules nécessaires:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation as anim

Créer une Figure, les axes avec AxesSubplot, et une ligne vide qui pourrait changer (la seule
chose susceptible de changer, élément à animer)

fig = [Link]()
ax = [Link](xlim=(0, 2), ylim=(-2, 2))
line, = [Link]([], [], lw=2)

113
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
 Le sous-module animation: utilisation de la fonction FuncAnimation
Fonction d’initialisation init(). Elle est appelée au début de l’animation: Cette fonction
servira à la création de l’arrière de l’animation présent sur chaque image. On prend ici,
une liste de données de ligne vide.
def init():
line.set_data([],[])
return line,
 Fonction d’animation animate(), appelée séquentiellement, avec i incrémenté à chaque
fois affichage. Cette fonction retourne un tuple d’éléments de la courbe qui ont été
modifiés (la ligne à modifier).

def animate(i):
x = [Link](0, 2, 1000)
y = [Link](2 * [Link] * (x - 0.01 * i))
line.set_data(x, y)
return line, 114
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module Matplotlib
 Le sous-module animation: utilisation de la fonction FuncAnimation
Fonction animateur FuncAnimation:

animer = [Link](fig, animate, init_func=init, frames=200, interval=20, blit=True)

- fig: figure ayant été initialisée au début


- animate: fonction à répéter
- init_func=init: init() est utilisée comme fonction d’initialisation
- frames: nombre total de séquences d’images (ici 200)
- interval : temps en milliseconde entre deux images affichées (deux appels de la fonction animate(),
fonction de mise à jour)
- blit = True : blit (bit-boundary block transfer) mis à True, impose au module d’animation de ne retracer
que les objets qui ont été modifiés (ici : line,). Cela permet d’obtenir une animation rapide et plus
nette.
- repeat=False: permet de ne pas répéter l’animation à la fin de la séquence. Par défaut (ou absent)
repeat=True
- repeat_delay: ajoute un délai en millisecondes avant de repéter l’animation. Par défaut,
repeat_delay=0.
[Link]() 115
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Le module SciPy contient de nombreux algorithmes très utilisés pour les calculs scientifiques
regroupés dans un certain nombre de sous modules :
 [Link] : sous module comportant des fonctions spéciales: (fonctions de Bessel, erf,
gamma, etc.)
 [Link] : Intégration numérique et résolution d'équations différentielles ordinaires
 [Link] : Méthodes d’optimisation (minimisation, moindres-carrés, zéros d’une
fonction, etc.).
 [Link] : Interpolation: interpolation, lissage(smoothing spline)
 [Link] : Transformées de Fourier
[Link] : sous-module dédié au traitement du signal (convolution, corrélation, filtrage,
ondelettes, etc.)
 [Link] : Algèbre linéaire
 [Link] : sous-module dédié aux statistiques (fonctions et distributions statistiques)
 [Link] : Traitement d’images multi-dimensionnelles
 [Link] : Entrées/sorties
 constants: Constantes physiques ou mathématiques.
 scipy peut être vu comme une extension de numpy car il contient toutes les fonctions de
numpy 116
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
 La documentation
Sur internet:
[Link]
[Link]
[Link]

 Commande help(): Toutes les aides internes aux fonctions et objets manipulés sont disponibles via la
commande help(),par exemple :
help(scipy)
help([Link])
help([Link])
 commande [Link](): a le même comportement que help() mais ne rentre pas dans un éditeur: il affiche
directement l’aide sur l’écran (ou l’imprime dans un fichier, pour plus de détails, voir [Link]([Link])).
Par exemple:
[Link]([Link])
 Commande [Link](): Permet de regarder dans les fichiers d’aide les occurrences de la chaîne de
caractère donnée en argument.
[Link](‘determinant’)
117
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy

118
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
 numpy vs scipy

119
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]
C’est une bibliothèque de fonctions spéciales qu’on retrouve fréquemment.
 pratiquement toutes les fonctions courantes de numpy (cos,sin,tan, etc.)
 les autres sont dans [Link]: fonctions de Bessel (Jn, Yn), gamma, beta, erf, airy,
legendre, fonctions elliptiques, etc.

120
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

121
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

122
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

123
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

124
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

125
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

126
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]

127
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]
Exemple : fonctions de Bessel du premier type

128
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Fonctions spéciales : [Link]
C’est une bibliothèque de fonctions spéciales qu’on retrouve fréquemment.
 pratiquement toutes les fonctions courantes de numpy (cos,sin,tan, etc.)
 les autres sont dans [Link].

Exemple 1: fonctions de Bessel du premier type

Exemple 2: fonctions de Bessel du deuxième type

129
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Algèbre linéaire : [Link]

130
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Algèbre linéaire : [Link]

131
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Algèbre linéaire : [Link]

132
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Algèbre linéaire : [Link]

133
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Algèbre linéaire : [Link]

134
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Interpolation : [Link]

135
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Interpolation : [Link]

136
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Interpolation : [Link]

137
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Interpolation : [Link]

138
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Intégration : [Link]

139
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Intégration : [Link]
Soit Il existe plusieurs fonctions python pour effectuer cette intégration:

 cumtrapz(paramètres) : implémente la méthode des trapèzes, sur un échantillonnage (tableau de


valeurs issues d’une subdivision régulière de l’intervalle d’intégration) de la fonction dont la
primitive est recherchée. Elle renvoie donc un tableau contenant les valeurs cumulées de l’intégrale
après chaque point. L’intégrale totale se retrouve donc dans le dernier élément du tableau. Par
défaut, le tableau de sortie a un élément de moins que le tableau d’entrée, mais on peut donner la
première valeur (pour avoir correspondance des indices des deux tableaux) via l’argument optionnel
initial=0.
 romberg(f,a,b): implémente la méthode de Romberg pour effectuer l’intégration approchée d’une
fonction f sur un intervalle [a, b] .
 quad(f,a,b) : pour intégrer f sur l’intervalle *a, b+. Elle retourne un couple constitué de la valeur
approchée de l’intégrale (1er élément) et d’une estimation de l’erreur commise.
 quadrature(f,a,b) : implémente la méthode de quadrature gaussienne pour l’intégration de la
fonction f sur l’intervalle *a, b+ . Elle retourne un couple constitué de la valeur approchée de
l’intégrale (1er élément) et de la différence obtenue entre les résultats de deux dernières itérations
(la méthode est récursive et s’arrête dès que cette valeur est inférieure à une borne donnée
tol=1.48e-08 modifiable en tant que paramètre optionnel).
140
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Intégration : [Link]
Il existe plusieurs fonctions
 trapz(f, dx=α): applique la méthode des trapèzes à un échantillonnage avec un pas dx=(b-a)/n
 simps(f, dx=α): : implémente la méthode de Simpson à un échantillonnage avec un pas dx=(b-a)/n
 romb(f, dx=α) : implémente la méthode de Romberg à un échantillonnage régulièrement espacé et
comportant 2k + 1 points pour un entier k. Le pas dx=1./ 2k est à spécifier
 odeint() : permet l’intégration d’équations différentielles avec condition initiale ( O.D.E. pour
« Ordinary Differential Equation », c.à.d. « Equation différentielle ordinaire », soit des équations du
premier ordre : y ′ = φ(y,t) avec condition initiale (t0, y0).
 dblquad(f,a,b,g,h): intègre la fonction f(x,y) en x sur l’intervalle *a, b+ et en y sur l’intervalle *g(x), h(x)+
Renvoie un couple contenant la valeur de l’intégrale et une estimation de l’erreur maximale commise
lors de l’intégration. Attention, la 1ère variable x d’intégration est toujours le 1er argument de la
fonction et la 2ème variable y toujours le 2ème . Aussi, g et h doivent être « callable », c’est-à-dire
accepter un argument (en l’occurrence x). Si les bornes d’intégration en y sont fixes, on pourra utiliser
des « fonctions anonymes » (fonction lambda)
 tplquad(f,a,b,g,h,r,q): intègre la fonction f(x,y,z) en x sur l’intervalle *a,b], en y sur l’intervalle
[g(x),h(x)] et en z sur l’intervalle *r(x, y), q(x, y)+. Elle renvoie un couple contenant la valeur de
l’intégrale et une estimation de l’erreur maximale commise lors de l’intégration. Attention, la 1 ère
variable x d’intégration est toujours le 1er argument de la fonction, la 2ème variable y toujours le 2ème
et la 3ème z toujours le 3ème . Aussi, g et h doivent être « callable » à un argument (x) mais r et q
doivent être « callable » à deux argument (x,y). 141
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Intégration : [Link]
Il existe plusieurs fonctions
 odeint(f,y0,t): permet d’intégrer numériquement une équation différentielle du type
La « fonction inconnue » y peut être un tableau de fonctions inconnues (permet de résoudre soit un
système d’équations couplées, soit une équation d’ordre supérieur vue comme un système
d’équations du premier ordre couplées). y0 est la liste des conditions initiales (pour chaque élément
du tableau y) àl’instant t[0],et t représente l’ensemble des temps aux quels l’on veut que l’équation
différentielle soit résolue.

142
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Intégration : [Link]
Il existe plusieurs fonctions

 trapz(f, dx=α): applique la méthode des trapèzes à un échantillonnage avec un pas dx=(b-a)/n
 simps(f, dx=α): : implémente la méthode de Simpson à un échantillonnage avec un pas dx=(b-a)/n
 romb(f, dx=α) : implémente la méthode de Romberg à un échantillonnage régulièrement espacé et
comportant 2k + 1 points pour un entier k. Le pas dx=1./ 2k est à spécifier
 odeint() : permet l’intégration d’équations différentielles avec condition initiale ( O.D.E. pour
« Ordinary Differential Equation », c.à.d. « Equation différentielle ordinaire », soit des équations du
premier ordre : y ′ = φ(y,t) avec condition initiale (t0, y0).

 Exemple

143
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Optimisation et fit : [Link]

144
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Optimisation et fit : [Link]

145
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy
Optimisation et fit : [Link]

146
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy

147
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique

Le module SciPy

148
[Link] Dr Lambert KADJO ****** 2014-2015

Vous aimerez peut-être aussi