Académique Documents
Professionnel Documents
Culture Documents
en Python
pour se remettre à niveau
et s’entraîner efficacement
Vuibert 2021
1 Bases
Le langage python est un langage orienté objet, c’est à dire que tout élément est un objet. Tous
les types d’objets sont regroupé dans des classes où sont définies les attributs de l’objet. Les entiers les
flottants, les complexes, le type booléen sont des objets avec pour chacun des caractéristiques différentes.
In [ 1 ] : 2+3∗5
>>> 2+3∗5
Out [ 1 ] : 17
17 ou
>>> . . .
In [ 2 ] : . . .
if n % k = = 0 : In [ 3 ] : t i m e _ d i v i s e u r s ( 1 2 0 0 0 0 )
# a j o u t de k dans L Out [ 3 ] : ’ 0 . 0 0 7 0 ’
L . append ( k )
duree = time ( ) − debutp In [ 4 ] : t i m e _ d i v i s e u r s (12 0 0 000 )
r e t u r n ”%.4 f ”% duree Out [ 4 ] : ’ 0 . 0 7 7 0 ’
2
Vuibert 2021
Types de base
Python
Bases
Mathématique de base
• Opérations : + , – , ∗ , / Affichage
∗∗ (puissance entière) 2 ∗ ∗10 = 1024
On peut afficher des valeurs littérales, des
// quotient de la division euclidienne. variables ou des expressions :
% reste de la division euclidienne.
Pour afficher du texte mettre : ”texte” ou ’texte’.
• Fonctions intrinsèques
print(”v =” , 3, ”cm” : , x , ”,” , y + 4)
abs( x ) valeur absolue ou module
round( x ,n ) arrondi du float x à n chiffres time
après la virgule
Évaluation d’une durée d’exécution d’un pro-
z .real partie entière de z
gramme en secondes.
z .imag partie imaginaire de z
from time import time
z .conjugate() conjugré de z
debut = time()
• Opération booléenne : ..
. Instructions
a and b : a et b en même temps
duree = time() – debut
a or b : a ou b ou les deux
not a : non a
3
Vuibert 2021
2 Instructions
Le décalage de 4 espaces après une instruction conditionnelle ou une boucle permet d’éviter l’ins-
truction de fin de condition ou de boucle.
In [ 1 ] : a = 10 # d r o i t e : ax + by + c = 0
In [ 2 ] : i f a > 5 : # dé t e r m i n e r l ’ é quat ion r é d u i t e
... : a = a + 1 if b = = 0 :
... : p r i n t ( ”x␣=” , − c /a )
In [ 3 ] : a else :
Out [ 3 ] : 11 m = −a/b # pente
# S i a = 3 a l o r s a r e s t e inchang é p = − c /b # ordonn é e à l ’ o r i g i n e
p r i n t ( ”y␣=” , m , ”x␣+” , p )
L = [ ]
Ce programme affiche dans la liste L, les carrés f o r i i n range ( 0 , 1 0 0 , 4 ) :
des multiples de 4 jusqu’à 99. L . append ( i ∗∗2)
p r i n t (L)
s , k = 0, 0
while s < 2019 :
Ce programme affiche l’entier k pour lequel la
k + = 1 # i n c r é mentation de k
somme des entier de 1 à k est inférieure à 2019. s + = k # on a j o u t e k à s
print (k)
4
Vuibert 2021
Instruction conditionnelle
Blocs instructions Bloc d’instructions exécuté uniquement si la
condition est vraie.
Instruction parente :
i f condition :
bloc d’instruction 1 …
instructions
…
e l i f condition : #s i n é c e s s a i r e
−→ instruction parente : instruction
bloc d’instruction 2 …
−→ else : #s i n é c e s s a i r e
… instructions
Python
Instructions
Boucle itérative
5
Vuibert 2021
Listes
3
Il existe plusieurs sortes de conteneurs (objet ayant vocation à en contenir d’autres) dont les listes ont
une part prépondérantes. On distingue les conteneurs ordonnés ou non et modifiable (après création)
ou non. Les principaux sont les :
• listes : ordonnée et modifiable : [1,2,3].
• tuples : ordonné et non modifiable : n upplet (1,2,3)
• strings : ordonné et non modifiable : ’texte’
• dictionnaires : non ordonné et modifiable : {’lundi’ : 1, ’mardi’ : 2}
• sets : non ordonné et modifiable : set([2,4,6])
In [ 1 ] : l s t = [ 1 , 2 ] + [ 3 , 4 ] # concat é n a t i o n
In [ 2 ] : lst
Out [ 2 ] : [1 , 2 , 3 , 4]
In [ 3 ] : 2∗ l s t
Out [ 3 ] : [1 , 2 , 3 , 4 , 1 , 2 , 3 , 4]
In [ 6 ] : L[3] # indice i n i t i a l 0
Out [ 6 ] : 81
In [ 7 ] : L[ − 1 ] # d e r n i e r é l ément de l a l i s t e
Out [ 7 ] : 441
In [ 8 ] : L [ 1 : 4 ] # p r i n c i p e du s l i c i n g
Out [ 8 ] : [ 9 , 36 , 8 1 ]
In [ 9 ] : L[ : : − 1]
Out [ 9 ] : [ 4 4 1 , 324 , 225 , 144 , 81 , 36 , 9 , 0 ]
In [ 1 0 ] : L . remove ( 4 4 1 ) # on r e t i r e 441 de l a l i s t e
In [ 1 1 ] : L
Out [ 1 1 ] : [ 0 , 9 , 36 , 81 , 144 , 225 , 3 2 4 ]
In [ 1 2 ] : L . extend ( [ 4 4 1 , 5 7 6 ] ) # on a j o u t e deux é l é ments
In [ 1 3 ] : L
Out [ 1 3 ] : [ 0 , 9 , 36 , 81 , 144 , 225 , 324 , 441 , 5 7 6 ]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101,
103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
6
Vuibert 2021
Définitions
Une liste peut se définir par compréhension : insertion d’un élément sur
L.insert(idx,val)
une position
L = [ 10*i for i in range(1,8) ]
suppression d’un élément à
L.remove(val)
Opérations génériques partir de sa valeur
L.reverse() inversion des éléments
len(L) nombre d’éléments dans L
L.sort() tri croissant
min(L), max(L) minimum ou maximum de L
L.sort(reverse=True) tri décroissant
sum(L) somme des éléments de L
L.clear() vide la liste
L.count(a) nombre d’occurrences a
L.index(a) position du 1er élément a
Python
Listes
L[ : : 2 ] Index à partir de 0.
Accès à chaque élément par L[index]
L[ 1 :–1 ]
L[0] −→ 10 le premier
L[ : ]
L[1] −→ 20 le second
L[ 2 : 5 ] L[–1] −→ 70 le dernier
L[–2] −→ 60 l’avant dernier
L[–4 : ]
7
Vuibert 2021
Modules
tu . r t ( 1 2 0 )
f l o c ( l /3 , n − 1)
tu . l t ( 6 0 )
f l o c ( l /3 , n − 1)
def flocon ( l , n) :
f o r i i n range ( 3 ) :
f l o c ( l , n)
tu . r t ( 1 2 0 )
8
Vuibert 2021
module random
Importation des modules
import random
Un module est un fichier python qui regroupe
des fonctions et des définitions de constantes. • random.random() : Valeur flottante dans [0,1[
Il y a plusieurs façons d’appeler un module : • random.uniforme(a,b) : Valeur flottante sur [a,b[.
• random.randint(a,b) : Valeur entière entre a inclus
• Avec l’utilisation du nom du module : et b inclus (équiprobabilité)
import mod : importe le module mod.
Utilisation avec le préfixe mod : mod.fct • random.choice(L) : Un élément de la liste L.
• random.shuffle(L) : Mélange la liste L « en place »
import mod as md : importe le module mod. (ne renvoie rien)
Utilisation avec le préfixe md : md.fct
• Sans l’utilisation du nom du module : Autres modules
from mod import * : importe le module mod. • Le module numpy : pour les vecteurs et les matrices.
Utilisation sans préfixe du module : fct
• Le module matplotlib : pour les graphiques.
from mod import f , g : importe les fonctions • Le module turtle : pour les dessins géométriques.
f et g module mod.
• Le module sympy : pour le calcul formel.
Python
Modules
Module math
import math
Fonctions mathématiques
• math.floor(-7.6) : partie entière, donne ici -8.0.
• math.ceil(-7.6) entier immédiatement supérieur, donne ici -7.
• math.exp(2) : exponentielle.
• math.log(2) : logarithme néperien.
• math.log10(2) : logarithme en base 10.
• math.log(8, 2) : log de 8 en base 2.
• math.sqrt(2) : racine carrée.
• math.pow(4, 5) : 4 puissance 5 (puissance en flottant possible).
• math.fmod(4.7, 1.5) : modulo, ici 0.2. Préférer cette fonction à % pour les flottants.
• math.factorial(4) : factorielle 4, donc 24 (uniquement pour les entiers positifs).
• math.fsum(L) : fait la somme des éléments d’une liste L, à préférer à sum (moins d’erreurs d’arrondis)
Fonctions trigonométriques
• fonctions trigonométriques : math.sin, math.cos, math.tan (l’argument est en radians)
• fonctions trigonométriques inverses : math.asin, math.acos, math.atan.
• fonctions hyperboliques : math.sinh, math.cosh, math.tanh.
• fonctions hyperboliques inverses : math.asinh, math.acosh, math.tanh.
• math.degrees(x) : convertit de radians en degrés.
• math.radians(x) convertit de degrés en radians).
• math.pi, math.e : les constantes π et e.
9
Vuibert 2021
5 Vecteurs et matrices
In [ 1 ] : import numpy as np
In [ 2 1 ] : M1 = np . a r r a y ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
In [ 2 ] : M = np . a r r a y ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
In [ 2 2 ] : M2 = np . a r r a y ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )
In [ 3 ] : M
In [ 2 3 ] : M1 + M2
Out [ 3 ] : a r r a y ( [ [ 1 , 2 , 3 ] ,
Out [ 2 3 ] : a r r a y ( [ [ 6 , 8 ] ,
[4 , 5 , 6]])
[10 , 12]])
In [ 4 ] : M. shape
In [ 2 4 ] : M1∗M2
Out [ 4 ] : ( 2 , 3)
Out [ 2 4 ] : a r r a y ( [ [ 5 , 1 2 ] ,
[21 , 32]])
In [ 5 ] : M. s i z e
Out [ 5 ] : 6
In [ 2 5 ] : M1∗∗2
Out [ 2 5 ] : a r r a y ( [ [ 1 , 4 ] ,
In [ 6 ] : M. ndim
[ 9, 16]])
Out [ 6 ] : 2 # t a b l e a u double e n t r é e s
In [ 2 6 ] : M1 + 3
In [ 7 ] : M. t o l i s t ( )
Out [ 2 6 ] : a r r a y ( [ [ 4 , 5 ] ,
Out [ 7 ] : [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ]
[6 , 7]])
In [ 8 ] : M. sum ( )
In [ 2 7 ] : np . dot (M1,M2)
Out [ 8 ] : 21
Out [ 2 7 ] : a r r a y ( [ [ 1 9 , 2 2 ] ,
[43 , 50]])
In [ 9 ] : M. sum ( 1 )
Out [ 9 ] : a r r a y ( [ 6 , 1 5 ] )
In [ 2 8 ] : np . s q r t (M1)
Out [ 2 8 ] : a r r a y ( [ [ 1 . , 1.414] ,
In [ 1 0 ] : M. min ( )
[ 1.732 , 2. ]])
Out [ 1 0 ] : 1
In [ 2 9 ] : import numpy . l i n a l g as a l g
In [ 1 1 ] : M. max ( 0 )
Out [ 1 1 ] : a r r a y ( [ 4 , 5 , 6 ] )
In [ 3 0 ] : a l g . det (M1)
Out [ 3 0 ] : − 2.0000000000000004
In [ 1 2 ] : I = np . eye ( 2 )
In [ 3 1 ] : a l g . i nv (M1)
In [ 1 3 ] : I
Out [ 3 1 ] : a r r a y ( [ [ − 2 . , 1 . ] ,
Out [ 1 3 ] : a r r a y ( [ [ 1 . , 0.] ,
[ 1.5 , −0.5]])
[ 0. , 1.]])
In [ 3 2 ] : a l g . e i g v a l s (M1)
In [ 1 4 ] : U = np . l i n s p a c e ( 0 , 1 , 5 )
Out [ 3 2 ] : a r r a y ( [ − 0 . 3 7 2 , 5 . 3 7 2 ] )
In [ 1 5 ] : U
In [ 3 3 ] : a l g . matrix_power (M1, 4 )
Out [ 1 5 ] : a r r a y ( [ 0 . , 0 . 2 5 , 0 . 5 , 0 . 7 5 , 1 . ] )
Out [ 3 3 ] : a r r a y ( [ [ 1 9 9 , 2 9 0 ] ,
PYTHON
[435 , 634]])
In [ 1 6 ] : V = np . arange ( 0 , 1 , 0 . 2 )
In [ 3 4 ] : A = np . a r r a y ( [ [ 2 , − 3 ] , [ − 2 , 1 ] ] )
In [ 1 7 ] : V
Out [ 1 7 ] : a r r a y ( [ 0 . , 0 . 2 , 0 . 4 , 0 . 6 , 0 . 8 ] )
In [ 3 5 ] : B = np . a r r a y ( [ [ 7 ] , [ − 5 ] ] )
In [ 1 8 ] : L = V. t o l i s t ( )
In [ 3 6 ] : a l g . s o l v e (A,B)
Out [ 3 6 ] : a r r a y ( [ [ 2 . ] ,
In [ 1 9 ] : L
[ −1.]])
Out [ 2 0 ] : [ 0 . 0 , 0 . 2 , 0 . 4 , 0 . 6 , 0 . 8 ]
10
Vuibert 2021
Opérations spécifiques (méthode)
Import numpy as np
Tableaux : création de vecteurs et matrices M.shape : dimension de M
Import numpy as np M.size : nombre de coefficients de M
np.array([1,2,3]) : vecteurs (1,2,3) M.ndim : le nombre de dimensions du
tableau M
1 2
np.array([ [1,2],[3,4] ]) : matrice M.sum() : somme des coefficients de M
3 4
M.min(), M.max() : plus petit plus grand , coef-
np.zeros(n) : vecteur de n composantes nul- ficient de M
les M.sum(0), M.sum(1) : somme de chaque colonne,
np.zeros((n,m)) : matrice n × m de coefficients de chaque ligne
nuls
M.min(0),M.min(1) : minimum de chaque colon-
np.eye(n) : matrice identité d’ordre n
ne, de chaque ligne
np.linspace(a,b,n) : vecteur de n valeurs régulières
dans [a , b ] Conversion
np.arange(a,b,p) : vecteur de valeurs régulières
V = np.array(L) : transforme une liste L en un
dans [a , b [ avec un pas p
vecteur V
L = V.tolist() : transforme un vecteur V en
une liste L
Python
Vecteurs et matrices
module numpy
Algèbre linéaire
Extraction d’une matrice
Import numpy.linalg as alg
Import numpy as np alg.det(M) : déterminant d’une matrice
M[ i ] , M[ i , : ] : ligne de M d’indice i carrée M
M[ : , j] : colonne de M d’indice i alg.inv(M) : inverse de M
alg.eigvals(M) : valeurs propres de M
Opérations alg.matrix_rank(M) : rang de M
M1+M2, M1∗M2, : opérations ”termes à termes” alg.matrix_power(M,n): Mn (n entier)
M∗∗2 (même dimension) alg.solve(A,B) : renvoie X dans AX = B
c*M, M+c : multiplication, somme de M
Fonctions mathématiques
par le scalaire c
np.dot(V1,V2) : produit scalaire de 2 vecteurs Import numpy as np
np.dot(M1,M2) : produit de 2 matrices np.exp, np.sin, np.cos, np.sqrt etc.
np.transpose(M) : transposée de M (mêmes fonctions que dans le module math)
np.trace(M) : trace de M Fonctions qui s’appliquent non seulement aux réels et
aux complexes mais aussi aux vecteurs et aux matrices
en s’appliquant à chaque termes).
11
Vuibert 2021
6 Fonctions et graphiques
Exemple 10. Fonctions itératives ou récursives
Soit la suite (u n ) définie sur N par : u 0 = 2 et u n +1 = 3u n − 2.
Déterminer la valeur d’un terme u N , N étant donné.
Si l’on calcule le terme u N , en calculant u 1 , puis u 2 jusqu’à u N , le prgramme est dit ”itératif.
Une fonction qui calcule les termes de la suite de façon itérative, c’est à dire qu’elle calcule u 1 puis u 2
jusqu’à u N est dite ”itérative”.
Une fonction faisant appel à elle-même à l’ordre inférieur, c’est à dire qu’elle part du terme u N puis
descend la récurrence en direction du terme initial u 0 est dite ”récursive”.
def u(n) :
def u(n) :
u=2
i f n==0 :
f o r i i n range ( 1 , n+1) :
return 2
u=3∗u−2
r e t u r n 3∗u ( n − 1) −2
return u
Fonction récursive
Fonction itérative
12
Vuibert 2021
Fonction
Appel de fonction
Une fonction est la traduction d’un algorithme qui :
• prend en entrée un ou plusieurs arguments ; Récupération du résultat renvoyé par une fonction
• effectue une suite d’instructions ;
• retourne un résultat. r = nomfct (3 , i + 2)
| {z }
ici 2 arguments
d e f nomfct ( x , y , . . . ) :
bloc instructions
return r é s u l t a t Intégrales, équations différentielles
Python
Fonctions et graphiques
Graphique
Vuibert 2021
Exemple 11. Graphique : méthode Monte-Carlo de la fiche 41
Z 1
Soit la fonction f (x ) = x (1 − x ) sin2 [100x (1 − x )]. On cherche à approcher l’intégrale I = f (x ) d x .
0
import m a t p l o t l i b . p y p l o t as p l t
import numpy as np
import random as rd
N=10000 # Nombre de p o i n t s a l é a t o i r e s
def f (x) :
r e t u r n x∗(1 − x ) ∗( np . s i n (100∗ x∗(1 − x ) ) ) ∗∗2
d e f monte_carlo ( ) :
n = 0
f o r i i n range (N) :
i f y2 [ i ] <= f ( x2 [ i ] ) :
n = n + 1
r e t u r n 0 . 2 5 ∗ n/N
x1 = np . l i n s p a c e ( 0 , 1 , 1 0 0 0 )
y1 = f ( x1 ) # 1000 p o i n t s images de f dans [ 0 , 1 ]
p l t . g r i d ( l i n e s t y l e= ’ − ’ )
p l t . xlim ( 0 , 1 )
p l t . ylim ( 0 , 0 . 2 5 )
p l t . p l o t ( x1 , y1 , ’ r ’ , l i n e w i d t h =1.5 , l a b e l= ’ f ( x ) ’ ) # Courbe de l a f o n c t i o n f
p l t . s c a t t e r ( x2 , y2 , c=c o l o r , s =5, e d g e c o l o r = ’ none ’ , l a b e l=monte_carlo ( ) )
p l t . show ( ) # V i s u a l i s a t i o n du graphique
14
Vuibert 2021
Activités en Python pour s’entraîner à coder et comprendre les rouages de Python
Vuibert 2021