Académique Documents
Professionnel Documents
Culture Documents
Prog Python Suite 1
Prog Python Suite 1
Prog Python Suite 1
2021-2022
Par
Tamba KOLANI
Master Génie Logiciel
koltemb@gmail.com
A l’origine de toute erreur attribuée à l’ordinateur, vous
trouverez au moins deux humaines, la première
consistant à attribuer l’erreur à l’ordinateur
Sommaire
BASE DE PYTHON...........................................................................................................................1
Présentation des outils de programmation ........................................................................................1
Environnement Anaconda et quelques base de python .....................................................................1
Utilisation en mode interactif ..........................................................................................................1
Opération arithmétique ................................................................................................................1
Opérateur / ..................................................................................................................................2
Opérateur % ................................................................................................................................2
Affectation ..................................................................................................................................2
Affichage - la fonction print() ......................................................................................................2
La fonction range() et list() ..........................................................................................................3
Accès aux éléments d’une liste ........................................................................................................4
La fonction len() .........................................................................................................................4
Lecture d’informations au clavier - la fonction input() .....................................................................5
Règles générales d’écriture..............................................................................................................5
Les identificateurs .......................................................................................................................5
Les mots-clés ..............................................................................................................................5
Les différentes sortes d’instruction ..............................................................................................5
TESTS : LES INSTRUCTIONS CONDITIONNELLES .....................................................................6
Bloc d’instructions - Indentation .....................................................................................................6
Instruction if ...................................................................................................................................6
Instruction if … else........................................................................................................................6
BOUCLES..........................................................................................................................................8
Boucles bornées et non bornées .......................................................................................................8
Boucle while ...............................................................................................................................9
Les instructions break et continue, et la clause else dans les boucles ................................................9
L’instruction break ......................................................................................................................9
L’instruction continue ............................................................................................................... 10
La clause else dans une boucle .................................................................................................. 11
LES PRINCIPAUX TYPES DE DONNEES ..................................................................................... 12
La fonction type() ......................................................................................................................... 12
Le type int (entier) ........................................................................................................................ 12
Le type float (flottant) ................................................................................................................... 12
Le type str (chaîne de caractères)................................................................................................... 12
Le type bool (booléen) .................................................................................................................. 13
Le type list (liste) .......................................................................................................................... 13
Le type complex (complexe) ......................................................................................................... 13
TUPLES EN PYTHON .................................................................................................................... 15
Parcourir un tuple.......................................................................................................................... 16
Dictionnaires en Python ................................................................................................................ 17
Création d’un dictionnaire ......................................................................................................... 18
Parcourir un dictionnaire ........................................................................................................... 18
FONCTIONS EN PYTHON ............................................................................................................. 19
Définition d’une fonction - def ...................................................................................................... 19
Corps de la fonction ...................................................................................................................... 19
Fonction sans paramètre ................................................................................................................ 19
Fonction avec paramètre ............................................................................................................... 20
Fonction avec plusieurs paramètres ............................................................................................... 21
Variables locales, variables globales.............................................................................................. 21
Utilisation d’une variable globale - global ..................................................................................... 22
Fonctions et procédures ................................................................................................................. 23
Valeurs par défaut pour les paramètres ........................................................................................ 23
Arguments avec étiquettes ............................................................................................................. 23
Utilisation des fonctions dans un script .......................................................................................... 24
Modules et importations ................................................................................................................ 26
Notion de package ........................................................................................................................ 28
Découverte de la bibliothèque Numpy ............................................................................................... 30
Introduction .................................................................................................................................. 30
Variables prédéfinies..................................................................................................................... 30
Tableaux - numpy.array() .............................................................................................................. 30
Création .................................................................................................................................... 30
Affichage .................................................................................................................................. 30
Accès aux éléments d’un tableau ............................................................................................... 30
Tableau 2D ................................................................................................................................... 31
Affichage .................................................................................................................................. 31
Accès aux éléments d’un tableau 2D ......................................................................................... 31
La fonction numpy.arange() .......................................................................................................... 31
La fonction numpy.linspace() ........................................................................................................ 32
Action d’une fonction mathématique sur un tableau ...................................................................... 32
Fonctions mathématiques avec NumPy ......................................................................................... 33
Nombres aléatoires .................................................................................................................... 34
BASE DE PYTHON
In [2]: 5 + 2
Out[2]: 7
Page | 1
Exemple2
4 + 5
3 - 7 # les espaces sont optionnels
5 + 2 * 3 # la priorité des opérations mathématiques est-elle respectée
?
(6 + 3) * 2
Opérateur /
L’opérateur / ne donne pas les mêmes résultats suivant les versions de Python. En
Python 2, il réalise par défaut une division euclidienne, aussi appelée division
entière (c’est-à-dire une division dont le résultat est un entier). En Python 3, il
réalise une division décimale standard comme sur une calculatrice
7 / 2
3.5
Opérateur %
L’opérateur % (appelé opérateur modulo) fournit le reste de la division entière
d’un nombre par un autre.
7 % 2
1
Affectation
L’affectation consiste à attribuer une valeur à une variable
>>>a = 2
>>>a
2
>>>b = a + 3
>>>b
5
Page | 2
bonjour
>>>a = 5
>>>print(a)
5
Il est possible de réaliser plusieurs affichages à la suite. Pour cela, on sépare les
éléments par des virgules : c’est la concaténation.
>>>a = 5
>>>print("a vaut", a)
a vaut 5
Attention
En Python 2, on ne mettait pas de parenthèses.
Python 2 : print "a vaut", a
Python 3 : print("a vaut", a)
Pour ne pas aller à la ligne et continuer sur la même ligne lors du prochain print :
Python 2 : print "a vaut", a,
Python 3 : print("a vaut", a, end=" ")
Il est possible avec Python 2.7 d’utiliser la syntaxe de Python 3 pour la fonction
print grâce à l’instruction from __future__ import print_function.
>>>list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Le nombre de fin qui lui est passé n’est jamais dans la liste générée. Par exemple,
range(10) génère 10 valeurs, exactement les indices des éléments d’une séquence
de longueur 10. Il est possible de faire commencer l’intervalle à un autre nombre,
ou de spécifier un incrément différent (même négatif)
Page | 3
>>>list(range(5, 10))
[5, 6, 7, 8, 9]
>>>list(range(0, 10, 3))
[0, 3, 6, 9]
>>>list(range(-10, -100, -30))
[-10, -40, -70]
De manière générale, on a :
range(valeur_initiale, borne_de_fin, pas)
Le pas peut être positif ou négatif. La valeur de la borne de fin (maximale ou
minimale) n’est jamais atteinte.
Exercice
Créer une liste contenant les entiers pairs allant de 10 à 20.
La fonction len()
La fonction len() renvoie le nombre d’éléments
>>>a = list(range(7,10))
>>>a
[7, 8, 9]
>>>len(a)
3
Page | 4
Lecture d’informations au clavier - la fonction input()
Par défaut, la fonction input() renvoie une chaîne de caractères. Il faut donc
utiliser la fonction int() qui permet d’obtenir un entier.
x = int(input("Donnez un entier : "))
Les mots-clés
Les mots réservés par le langage Python (if, for, etc.) ne peuvent pas être utilisés
comme identificateurs.
Page | 5
TESTS : LES INSTRUCTIONS CONDITIONNELLES
Instruction if … else
Syntaxe
if condition:
Instruction A
else:
Instruction B
Page | 6
Ici si « condition » est vrai alors Instruction A sera exécutée sinon, c’est
instruction B
Exemple
x = int(input("Donnez un entier : "))
if x > 0:
print(x, "est positif")
else:
print(x, "est négatif ou nul")
print("Fin")
Remarque
Une expression booléenne peut contenir les opérateurs de comparaison ou
logiques
Opérateur Signification
x == y x est égal à y
x != y x est différent de y
x>y x est plus grand que y
x<y x est plus petit que y
x >= y x est plus grand ou égal à y
x <= y x est plus petit ou égal à y
and ET
or OU
Exemple
>>>3 < 4
True
>>>3 > 4
False
>>>2 < 3 and 3 < 4
True
>>>2 < 3 and 3 > 4
False
Page | 7
BOUCLES
Les boucles s’utilisent pour répéter plusieurs fois l’exécution d’une partie du
programme.
Boucles bornées et non bornées
Boucle bornée
Quand on sait combien de fois doit avoir lieu la répétition, on utilise généralement
la boucle for.
Boucle non bornée
Si on ne connait pas à l’avance le nombre de répétitions, on choisit une boucle
while.
Exemple d’une boucle for
for i in [0, 1, 2, 3]:
print("i a pour valeur", i)
L’instruction for est une instruction composée, c’est-à-dire une instruction dont
l’en-tête se termine par deux points (:), suivie d’un bloc indenté qui constitue le
corps de la boucle.
On dit que l’on réalise une itération de la boucle à chaque fois que le corps de la
boucle est exécuté.
Dans l’en-tête de la boucle, on précise après le mot-clé for le nom d’une variable
(i dans l’exemple ci-dessus) qui prendra successivement toutes les valeurs qui sont
données après le mot-clé in. On dit souvent que cette variable (ici i) est un
compteur car elle sert à numéroter les itérations de la boucle.
Il est possible d’obtenir le même résultat sans donner la liste des valeurs, mais en
utilisant la fonction range().
for i in range(4):
print("i a pour valeur", i)
Pour parcourir les indices d’une liste, il est possible de combiner range() et len()
comme ci-dessous :
c = ["Marc", "est", "dans", "le", "jardin"]
for i in range(len(c)):
print("i vaut", i, "et c[i] vaut", c[i])
Boucle while
Syntaxe
while condition:
Instruction A
x = 1
while x < 10:
print("x a pour valeur", x)
x = x * 2
print("Fin")
for i in range(10):
print("debut iteration", i)
print("bonjour")
if i == 2:
break
print("fin iteration", i)
Page | 9
print("apres la boucle")
Remarque
Dans le cas de boucles imbriquées, l’instruction break ne fait sortir que de la
boucle la plus interne.
Dans de nombreux langages, il existe une instruction do…while qui permet de
créer une boucle pour laquelle on ne connaît pas à l’avance le nombre de
répétition, mais qui doit s’exécuter au moins une fois. Cette instruction n’existe
pas en Python, mais on peut facilement reproduire son fonctionnement de la façon
suivante :
while True:
n = int(input("donnez un entier > 0 : "))
print("vous avez fourni", n)
if n > 0:
break
print("reponse correcte")
L’instruction continue
L’instruction continue permet de passer prématurément au tour de boucle suivant.
Elle fait continuer sur la prochaine itération de la boucle.
for i in range(4):
print("debut iteration", i)
print("bonjour")
if i < 2:
continue
print("fin iteration", i)
print("apres la boucle")
debut iteration 0
bonjour
debut iteration 1
Page | 10
bonjour
debut iteration 2
bonjour
fin iteration 2
debut iteration 3
bonjour
fin iteration 3
apres la boucle
Page | 11
LES PRINCIPAUX TYPES DE DONNEES
Comme PHP, Python est un langage à typage dynamique, ce qui signifie qu’il
n’est pas nécessaire de déclarer les variables avant de pouvoir leur affecter une
valeur. La valeur que l’on affecte possède un type qui dépend de la nature des
données (nombre entier, nombre à virgule, chaîne de caractères, etc). Le type du
contenu d’une variable peut donc changer si on change sa valeur.
La fonction type()
Pour connaître le type d’une donnée ou le type de la valeur d’une variable, il suffit
d’utiliser la fonction type().
Exemple
>>>type(15)
int
>>>a = 15
>>>type(a)
int
>>>a = "toto"
type(a)
str
Exemple
>>>a = 14.5
>>>type(a)
float
>>>a = 'Bonjour'
>>>type(a)
Page | 12
str
>>>b = "Bonsoir"
>>>type(b)
str
>>>a = True
>>>type(a)
bool
>>>b = not(a)
>>>b
False
Remarque : la fonction not est un opérateur logique qui renvoie l’opposé de la
valeur booléenne transmise. Pour True, on obtient False. Réciproquement, il
renvoie False quand on lui transmet True.
>>>a = 2 + 3j
>>>type(a)
complex
>>>a
(2+3j)
Remarque
Si la partie imaginaire vaut j simplement il faut écrire 1j. Cette oublie génère
souvent des erreurs de type : NameError: name 'j' is not defined
Page | 13
Page | 14
TUPLES EN PYTHON
A partir des types de base (int, float, etc.), il est possible d’en élaborer de
nouveaux. On les appelle des types construits.
Un exemple de type construit est le « tuple ». Il permet de créer une collection
ordonnée de plusieurs éléments. En mathématiques, on parle de p-uplet. Par
exemple, un quadruplet est constitué de 4 éléments.
Les tuples ressemblent aux listes, mais on ne peut pas les modifier une fois qu’ils
ont été créés.
On dit qu’un tuple n’est pas mutable. On le définit avec des parenthèses.
Exemple
>>>a = (3, 4, 7)
>>>type(a)
<class 'tuple'>
Parfois, les tuples ne sont pas entourés de parenthèses, même s’il s’agit quand
même de tuples. Ainsi, on peut utiliser la notation suivante
>>>b, c = 5, 6
>>>b
5
>>>c
6
Cette syntaxe avec plusieurs variables à gauche du signe = peut aussi être utilisée
avec une variable unique à droite si celle-ci contient un tuple
>>>a = (3, 4)
>>>u, v = a
>u
3
>v
4
NB
Il est très facile de créer une fonction qui renvoie un tuple. Il suffit d’indiquer ce
tuple après return.
def test():
return 3, 4
Page | 15
>>>b, c = test()
>>>b
3
>>>c
4
Parcourir un tuple
Tout Comme une liste, il est possible de parcourir un tuple avec une boucle for.
>>>a = (3, 4)
for i in a:
print(i)
Résultat
3
4
La valeur d’un élément du tuple est obtenue en utilisant la même syntaxe que pour
une liste.
>>>a[0]
3
>>>a[1]
4
Pour créer un tuple contenant un seul élément, il faut donc utiliser une syntaxe
spécifique qui contient une virgule.
>>>b = (3,)
>>>b
(3,)
>>>type(b)
<class 'tuple'>
Première approche
>>>c = b[0]
>>>c
3
Deuxième approche
>>>d, = b
>>>d
3
La deuxième approche avec une virgule d, = b est plus légère que la syntaxe qui
utilise des crochets c = b[0].
Page | 16
Il est possible d’utiliser la syntaxe nom_de_variable, = aussi avec une liste à un
élément.
>>>u = [5]
>>>v, = u
>>>v
5
Dictionnaires en Python
Comme on l’a vu avec les listes et les tuples, à partir des types de base (int, float,
etc.) il est possible d’élaborer de nouveaux types qu’on appelle des types
construits.
Un nouvel exemple de type construit est le dictionnaire.
Les éléments d’une liste ou d’un tuple sont ordonnés et on accéde à un élément
grâce à sa position en utilisant un numéro qu’on appelle l’indice de l’élément.
Un dictionnaire en Python va aussi permettre de rassembler des éléments mais
ceux-ci seront identifiés par une clé. On peut faire l’analogie avec un dictionnaire
de français où on accède à une définition avec un mot.
Contrairement aux listes qui sont délimitées par des crochets, on utilise des
accolades pour les dictionnaires.
Exemple
mon_dictionnaire = {
"voiture": "véhicule à quatre roues",
"vélo": "véhicule à deux roues"
}
Page | 17
'tricycle': 'véhicule à trois roues'
}
Parcourir un dictionnaire
Pour parcourir un dictionnaire on va se servir de la fonction items() comme ceci :
>>>nombre_de_roues = {"voiture": 4, "vélo": 2, "tricycle": 3}
>>>for i in nombre_de_roues.items():
print(i)
('voiture', 4)
('vélo', 2)
('tricycle', 3)
Page | 18
FONCTIONS EN PYTHON
Lorsqu’une tâche doit être réalisée plusieurs fois par un programme avec
seulement des paramètres différents, on peut l’isoler au sein d’une fonction. Cette
approche est également intéressante si la personne qui définit la fonction est
différente de celle qui l’utilise. Par exemple, nous avons déjà utilisé la fonction
print(),input(), range(), len() qui sont des fonctions natives de python
On peut utiliser n’imorte quel nom pour la fonction, à l’exception des mots-clés
réservés du langage, et à la condition de n’utiliser aucun caractère spécial ou
accentué (le caractère souligné « _ » est permis). Comme c’est le cas pour les
noms de variables, on utilise par convention des minuscules, notamment au début
du nom (les noms commençant par une majuscule seront réservés aux classes).
Corps de la fonction
Comme les instructions if, for et while, l’instruction def est une instruction
composée. La ligne contenant cette instruction se termine obligatoirement par un
deux-points (:), qui introduisent un bloc d’instructions qui est précisé grâce à
l’indentation. Ce bloc d’instructions constitue le corps de la fonction.
print("bonjour")
compteur3()
compteur3()
Nous venons de définir une fonction très simple qui compte jusqu’à 2. Notez bien
les parenthèses, les deux points, et l’indentation du bloc d’instructions qui suit la
ligne d’en-tête (c’est ce bloc d’instructions qui constitue le corps de la fonction
proprement dite).
Page | 19
Après la définition de la fonction, on trouve le programme principal qui débute
par l’instruction print("bonjour"). Il y a ensuite au sein du programme principal,
l’appel de la fonction grâce à compteur3().
Nous pouvons maintenant réutiliser cette fonction à plusieurs reprises, autant de
fois que nous le souhaitons.
Nous pouvons également l’incorporer dans la définition d’une autre fonction.
def compteur3():
i = 0
while i < 3:
print(i)
i = i + 1
def double_compteur3():
compteur3()
compteur3()
print("bonjour")
double_compteur3()
Une première fonction peut donc appeler une deuxième fonction, qui elle-même
en appelle une troisième, etc.
def compteur(stop):
i = 0
while i < stop:
print(i)
i = i + 1
a = 5
compteur(a)
Page | 20
Le nom d’une variable que nous passons comme argument n’a rien à voir
avec le nom du paramètre correspondant dans la fonction.
Ces noms peuvent être identiques, mais il faut bien comprendre qu’ils ne
désignent pas la même chose (en dépit du fait qu’ils puissent contenir une
valeur identique).
compteur_complet(1, 7, 2)
1
3
5
Ainsi :
Pour définir une fonction avec plusieurs paramètres, il suffit d’inclure ceux-
ci entre les parenthèses qui suivent le nom de la fonction, en les séparant à
l’aide de virgules.
Lors de l’appel de la fonction, les arguments utilisés doivent être fournis
dans le même ordre que celui des paramètres correspondants (en les
séparant eux aussi à l’aide de virgules). Le premier argument sera affecté
au premier paramètre, le second argument sera affecté au second paramètre,
et ainsi de suite.
Page | 21
même. On dit que ces variables sont des variables locales à la fonction. Une
variable locale peut avoir le même nom qu’une variable de l’espace de noms
global mais elle reste néanmoins indépendante.
Les contenus des variables locales sont stockés dans l’espace de noms local qui
est inaccessible depuis l’extérieur de la fonction.
Les variables définies à l’extérieur d’une fonction sont des variables globales.
Leur contenu est « visible » de l’intérieur d’une fonction, mais la fonction ne peut
pas le modifier de façon globale (la modification n’est valable que dans le corps
de la fonction.
Exemple
def test():
b = 5
print(a, b)
a = 2
b = 7
test()
print(a, b)
Ce programme va afficher
2 5
2 7
def test():
global b
b = 5
print(a, b)
a = 2
b = 7
test()
print(a, b)
Ce programme donnera :
2 5
2 5
Page | 22
Fonctions et procédures
Les fonctions que nous avons décrites jusqu’à présent ne sont pas tout à fait des
fonctions au sens strict, mais plus exactement des procédures. Une « vraie »
fonction (au sens strict) doit en effet renvoyer une valeur lorsqu’elle se termine.
Une « vraie » fonction peut s’utiliser à la droite du signe égale dans des
expressions telles que 𝑦 = sin(𝑎) . On comprend aisément que dans cette
expression, la fonction sin(𝑎) renvoie une valeur (le sinus de l’argument a) qui
est directement affectée à la variable y.
Exemple
def cube(w):
return w**3
On aura
>>>cube(3)
27
>>>a = cube(4)
>>>a
64
On aura :
>>>politesse("Dupont")
Veuillez agréer, Monsieur Dupont , mes salutations distinguées.
>>>politesse('Durand', 'Mademoiselle')
Veuillez agréer, Mademoiselle Durand , mes salutations distinguées.
Lorsque l’on appelle cette fonction en ne lui fournissant que le premier argument,
le second reçoit tout de même une valeur par défaut. Si l’on fournit les deux
arguments, la valeur par défaut pour le deuxième est tout simplement ignorée.
Page | 23
fournissant les arguments correspondants dans n’importe quel ordre, à la
condition de désigner nommément les paramètres correspondants.
Exemple :
def oiseau(voltage=100, etat="allumé", action="danser la java"):
print("Ce perroquet ne pourra pas", action)
print("si vous le branchez sur", voltage, "volts !")
print("L'auteur de ceci est complètement", etat)
On aura à l’exécution :
>>>oiseau(etat="givré", voltage=250, action="vous approuver")
Ce perroquet ne pourra pas vous approuver
si vous le branchez sur 250 volts !
L'auteur de ceci est complètement givré
Ou
>>>oiseau()
Ce perroquet ne pourra pas danser la java
si vous le branchez sur 100 volts !
L'auteur de ceci est complètement allumé
import numpy as np
def cube(n):
return n**3
def volume_sphere(r):
return 4 / 3 * np.pi * cube(r)
Page | 24
A l’intérieur de la fonction volume_sphere(), il y a un appel de la fonction cube().
Notez bien que les deux parties du programme ont été disposées dans un certain
ordre :
d’abord la définition des fonctions,
et ensuite le corps principal du programme.
Cette disposition est nécessaire, parce que l’interpréteur exécute les lignes
d’instructions du programme l’une après l’autre, dans l’ordre où elles apparaissent
dans le code source. Dans le script, la définition des fonctions doit donc précéder
leur utilisation.
Pour vous en convaincre, intervertissez cet ordre (en plaçant par exemple le corps
principal du programme au début), et prenez note du type de message d’erreur qui
est affiché lorsque vous essayez d’exécuter le script ainsi modifié.
Page | 25
Modules et importations
Très souvent, on utilise des fonctions déjà définies (dans une bibliothèque). Par
exemple, avec la bibliothèque « matplotlib », on peut utiliser la fonction « plot() »
Page | 26
pour tracer des courbes sans avoir à écrire nous-mêmes cette fonction. Nous allons
donc voir à présent comment définir des fonctions dans un module et faire en sorte
qu’un utilisateur puisse appeler ces fonctions dans son programme.
Par exemple, nous allons créer un fichier nommé puissance.py qui va définir 2
fonctions : carre() et cube(). Un tel fichier est appelé un module et il va pouvoir
être importé dans un autre fichier, et en particulier dans le fichier qui contient le
programme principal.
def carre(valeur):
resultat = valeur**2
return resultat
def cube(valeur):
resultat = valeur**3
return resultat
a = 5
u = carre(a)
print("le carre vaut", u)
a = 5
u = carre(a)
print("le carre vaut", u)
v = cube(a)
print("le cube vaut", v)
a = 5
u = carre(a)
print("le carre vaut", u)
v = cube(a)
print("le cube vaut", v)
Page | 27
L’importation de toutes les fonctions avec * est fortement déconseillée. En effet,
elle ne permet pas d’avoir une vision claire des fonctions qui ont été importées.
Ceci est donc une source potentielle d’erreurs. Il faut plutôt importer le module.
Dans ce cas, il faut préciser le nom du module devant la fonction.
import puissance
a = 5
u = puissance.carre(a)
print("le carre vaut", u)
v = puissance.cube(a)
print("le cube vaut", v)
Il est aussi possible de donner un alias à une fonction comme dans l’exemple
suivant :
from puissance import carre as ca
a = 5
u = ca(a)
print("le carre vaut", u)
Notion de package
Quand on a un grand nombre de modules, il peut être intéressant de les organiser
dans des dossiers. Un dossier qui rassemble des modules est appelé un package
(paquetage en français). Le nom du package est le même que celui du dossier. Par
exemple, on crée un dossier package1 dans lequel on place le fichier module1.py
suivant :
def fonction1(a):
return a**2
Page | 28
import package1.module1
u = package1.module1.fonction1(3)
print("u vaut", u)
Remarque
Il est aussi possible d’avoir des dossiers imbriqués, c’est-à-dire des dossiers qui
contiennent d’autres dossiers.
Page | 29
Découverte de la bibliothèque Numpy
Introduction
La bibliothèque NumPy permet d’effectuer des calculs numériques avec Python.
Elle introduit une gestion facilitée des tableaux de nombres.
Pour utiliser NumPy, il faut au préalable l’importer comme nous l’avons vu
précédemment
import numpy as np
Variables prédéfinies
Variable pi
NumPy permet d’obtenir la valeur de pi.
import numpy as np
np.pi
3.141592653589793
Tableaux - numpy.array()
Création
Les tableaux (en anglais, array) peuvent être créés avec numpy.array(). On utilise
des crochets pour délimiter les listes d’éléments dans les tableaux.
import numpy as np
a = np.array([1, 2, 3, 4])
Affichage
>>>a
array([1, 2, 3, 4])
>>>type(a)
numpy.ndarray
Page | 30
1
>>>a[3]
4
Tableau 2D
Il est possible de créer un tableau 2D en utilisant une liste de listes au moyen de
crochets imbriqués. Les listes internes correspondent à des lignes du tableau.
b = np.array([[1, 2, 3], [4, 5, 6]])
Affichage
>>>b
array([[1, 2, 3],
[4, 5, 6]])
>>>type(b)
numpy.ndarray
La fonction numpy.arange()
Elle est équivalente à la fonction native range() de python
>>>m = np.arange(3, 15, 2)
>>>m
array([ 3, 5, 7, 9, 11, 13])
>>>type(m)
numpy.ndarray
Page | 31
range(3, 15, 2)
>>>type(n)
range
Il est à noter que numpy.arange() accepte des arguments qui ne sont pas entiers.
>>>np.arange(0, 11*np.pi, np.pi)
array([ 0. , 3.14159265, 6.28318531, 9.42477796,
12.56637061, 15.70796327, 18.84955592, 21.99114858,
25.13274123, 28.27433388, 31.41592654])
La fonction numpy.linspace()
La fonction numpy.linspace() permet d’obtenir un tableau 1D allant d’une valeur
de départ à une valeur de fin avec un nombre donné d’éléments.
>>>np.linspace(3, 9, 10)
array([ 3. , 3.66666667, 4.33333333, 5. , 5.66666667,
6.33333333, 7. , 7.66666667, 8.33333333, 9. ])
Page | 32
Fonctions mathématiques avec NumPy
Il existe des fonctions mathématiques qui sont accessibles grâce à NumPy. Il
s’agit en autre de :
Fonctions trigonométriques
Numpy.sin(x) Sinus
Numpy.cos(x) Cosinus
Numpy.tan(x) Tangente
Numpy.arcsin(x) Arcsinus
Numpy.arccos(x) Arccosinus
Numpy.arctan(x) Arctangente
Fonctions hyperpoliques
Numpy.sinh(x) Sinus hyperpolique
Numpy.cosh(x) Cosinus hyperpolique
Numpy.tanh(x) Tangente hyperpolique
Numpy.arcsinh(x) Arcsinus hyperpolique
Numpy.arcosh(x) Arccosinus hyperpolique
Numpy.arctanh(x) Arctangente hyperpolique
Fonctions diverses
X**n x à la puissance n, exemple : x**2
Numpy.sqrt(x) racine carrée
Numpy.exp(x) exponentielle
Numpy.log(x) logarithme népérien
Numpy.abs(x) valeur absolue
Numpy.sign(x) signe
Fonctions utiles pour les nombres complexes
Numpy.real(x) partie réelle
Numpy.imag(x) partie imaginaire
Numpy.abs(x) module
Numpy.angle(x) argument en radians
Numpy.conj(x) complexe conjugué
Arrondis
Numpy. around(x,n) arrondi à n décimales
Numpy. trunc(x) retourne la partie entière du nombre (le nombre est
tronqué)
Page | 33
Exemple
>>>import numpy as np
>>>x = np.array([ 2 + 3j, 1j, 1])
>>>np.real(x)
array([ 2., 0., 1.])
>>>np.imag(x)
array([ 3., 1., 0.])
>>>np.abs(x)
array([ 3.60555128, 1. , 1. ])
>>>np.angle(x)
array([ 0.98279372, 1.57079633, 0. ])
>>>np.conj(x)
array([ 2.-3.j, 0.-1.j, 1.-0.j])
>>>x = np.array([3.73637, 5.4374345])
>>>np.around(x,2)
array([ 3.74, 5.44])
>>>np.around(x,0)
array([ 4., 5.])
Nombres aléatoires
La fonction numpy.random.random() permet d’obtenir des nombres compris
entre 0 et 1 par tirage aléatoire avec une loi uniforme. Il faut noter que ces nombres
aléatoires sont générés par un algorithme et ils ne sont donc pas vraiment «
aléatoires » mais pseudo-aléatoires.
La fonction numpy.random.random() peut être utilisée avec des arguments pour
obtenir des tableaux. Les arguments précisent alors la forme (shape) du tableau
souhaité.
>>>np.random.random()
0.5540884899329033
>>>np.random.random(3)
array([ 0.86431861, 0.88519197, 0.30663316])
>>>np.random.random((2,3))
array([[ 0.66265691, 0.39385577, 0.09319192],
[ 0.43483474, 0.42859904, 0.79189574]])
Remarque
Il existe encore d’autres fonctions dans la bibliothèque numpy. Pour plus
d’informations on peut consulter la documentation sur le site officiel :
https://numpy.org/
Page | 34
Les courbes avec Python
Introduction
En programmation scientifique, il est très courant d’utiliser les courbes pour
représenter les données. Pour tracer les courbes en python en plus de la
bibliothèque « numpy » pour manipuler les données, on utilisera la bibliothèque
« matplotlib » pour les courbes. Cette dernière dispose de fonctions utiles pour la
représentation graphique
La fonction plot()
L’instruction « plot() » permet de tracer des courbes qui relient des points dont
les abscisses et ordonnées sont fournies dans des tableaux.
Exemple
Syntaxe « PyLab »
from pylab import *
x = array([1, 3, 4, 6])
y = array([2, 3, 5, 1])
plot(x, y)
Syntaxe « standard »
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 3, 4, 6])
y = np.array([2, 3, 5, 1])
plt.plot(x, y)
Page | 35
Figure 1: Courbe affichée
Syntaxe « standard »
import numpy as np
import matplotlib.pyplot as plt
Page | 37
Définition du domaine des axes - xlim() et ylim()
Il est possible fixer indépendamment les domaines des abscisses et des ordonnées
en utilisant les fonctions xlim() et ylim(). Leurs signatures sont les suivantes :
𝑥𝑙𝑖𝑚 (𝑥𝑚𝑖𝑛, 𝑥𝑚𝑎𝑥 )
𝑦𝑙𝑖𝑚(𝑦𝑚𝑖𝑛, 𝑦𝑚𝑎𝑥)
Ces fonctions sont disponibles dans « pyplot » de matplotlib
Exemple
from pylab import *
show()
Exemple 2
from pylab import *
show()
Page | 38
Figure 4: Courbe 2 de cosinus
show()
Page | 39
Ajout d’une légende - legend()
Comme son nom l’indique cette fonction permet d’ajouter une légende à la
courbe. Cette fonction est disponible dans « pyplot » de matplotlib
from pylab import *
show()
Note
Pour faire afficher le label, il ne faut pas oublier de faire appel à l’instruction
legend().
show()
Page | 40
Figure 7: Label sur les axes
show()
show()
Page | 41
Figure 8: Affichage de plusieurs courbes
Formats de courbes
Il est possible de préciser la couleur, le style de ligne et de symbole (« marker »)
en ajoutant une chaîne de caractères de la façon suivante :
from pylab import *
show()
Page | 42
Style de ligne
Les chaînes de caractères suivantes permettent de définir le style de ligne :
Chaîne Effet
- ligne continue
-- tirets
: ligne en pointillé
-. tirets points
Remarque
Si on ne veut pas faire apparaître de ligne, il suffit d’indiquer un symbole sans
préciser un style de ligne.
Exemple
from pylab import *
show()
Page | 43
Symbole (« marker »)
Les chaînes de caractères suivantes permettent de définir le symbole («marker»):
Chaîne Effet
. point marker
, pixel marker
o circle marker
V triangle_down marker
^ triangle_up marker
< triangle_left marker
> triangle_right marker
1 tri_down marker
2 tri_up marker
3 tri_left marker
4 tri_right marker
s square marker
+ plus marker
Couleur
Les chaînes de caractères suivantes permettent de définir la couleur :
Chaîne Couleur
b Bleu (Blue)
g Vert (Green)
r Rouge (Red)
c Cyan (Cyan)
m Magenta (Magenta)
y Jaune (Yellow)
k Noir (Black)
w Blanc (White)
Largeur de ligne
Pour modifier la largeur des lignes, il est possible de changer la valeur de
l’argument « linewidth » de la fonction plot de « matplotlib.pyplot ».
from pylab import *
x = linspace(0, 2*pi, 30)
y1 = cos(x)
y2 = sin(x)
plot(x, y1, label="cos(x)")
plot(x, y2, label="sin(x)", linewidth=4)
legend()
show()
Page | 44
Figure 11: Largeur de ligne
Tracé de formes
Comme la fonction « plot() » ne fait que relier des points, il est possible de lui
fournir plusieurs points avec la même abscisse.
from pylab import *
x = array([0, 1, 1, 0, 0])
y = array([0, 0, 1, 1, 0])
plot(x, y)
xlim(-1, 2)
ylim(-1, 2)
show()
Page | 45
L’instruction axis("equal")
L’instruction « axis("equal") » permet d’avoir la même échelle sur l’axe des
abscisses et l’axe des ordonnées afin de préserver la forme lors de l’affichage. En
particulier, grâce à cette commande un carré apparaît vraiment comme un carré,
de même pour un cercle. Elle est disponible depuis « matplotlib.pyplot »
from pylab import *
x = array([0, 1, 1, 0, 0])
y = array([0, 0, 1, 1, 0])
plot(x, y)
axis("equal")
show()
x = cos(theta)
y = sin(theta)
plot(x, y)
axis("equal")
show()
Page | 46
Figure 12: Cercle avec les courbes paramétriques
Page | 47
Tableaux et calcul matriciel avec NumPy
Introduction
Page | 48