Académique Documents
Professionnel Documents
Culture Documents
PC*
Le module numpy
I. Pour commencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
I.1 Pourquoi un cours sur numpy ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
I.2 Comment charger le module numpy ? . . . . . . . . . . . . . . . . . . . . . . . . 2
II. Les tableaux numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
II.1 Création avec np.array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
II.2 Création avec des fonctions spéciales . . . . . . . . . . . . . . . . . . . . . . . . 3
II.3 Attributs d’un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
II.4 Lecture dans un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
II.5 Écriture dans un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
II.6 À propos des copies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
III. Opérations sur les tableaux numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
III.1 Les opérations se font terme à terme . . . . . . . . . . . . . . . . . . . . . . . . 8
III.2 Les fonctions universelles s’appliquent terme à terme . . . . . . . . . . . . . . . 8
III.3 Quelques méthodes sur les tableaux . . . . . . . . . . . . . . . . . . . . . . . . 9
III.4 Opérations d’algèbre linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
III.5 Manipulation de polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2015-2016 1/30
2016
PC* Python 1 Le module numpy
I. Pour commencer
I.1 Pourquoi un cours sur numpy ?
L’oral de math 2 à Centrale-Supélec Pour cette épreuve mixte, l’outil informatique est utilisé pour
résoudre un exercice mathématique. C’est très naturellement que les bibliothèques scientifiques (numpy,
matplotlib, scipy) et leurs sous-modules (matplotlib.pyplot, numpy.polynomial, numpy.alg,
scipy.integrate etc.) sont utilisées. Sont annexées à ce cours les fiches fournies par le service concours
Centrale-Supélec.
On définit souvent un tableau numpy à partir d’une liste, en utilisant la fonction array du mo-
dule numpy, nommée np.array :
a = np.array( [1, 2, 3] )
# [1 2 3]
b = np.array( [[1, 2, 3],
[2, 3, 4],
[0, 1, 0]])
# [[1 2 3]
# [2 3 4]
# [0 1 0]]
Mais ce ne sont pas des listes :
print(type(a))
# <class 'numpy.ndarray'>
print(a.dtype)
# int64
L’attribut dtype indique le type commun à tous les éléments du tableau – ici des entiers codés sur
64 bits.
2/30 2015-2016
2016PC* Python 1 Le module numpy
Découvrons les trois fonctions spéciales : np.ones, np.zeros, np.eye, ainsi que la fonction np.diag :
a = np.ones((3, 5))
# [[ 1. 1. 1. 1. 1.]
# [ 1. 1. 1. 1. 1.]
# [ 1. 1. 1. 1. 1.]]
b = np.ones((3, 5), np.int) # on ne met pas de dtype car dtype est
# le 2ème argument de np.ones
# [[1 1 1 1 1]
# [1 1 1 1 1]
# [1 1 1 1 1]]
c = np.zeros((3, 5))
# [[ 0. 0. 0. 0.]0.
# [ 0. 0. 0. 0.]0.
# [ 0. 0. 0. 0.
0.]]
d = np.zeros((3, 5),
dtype=np.bool) # on met un dtype, car dtype est le 4ème argument
# (et non le 2ème) de np.eyes
# [[False False False False False]
# [False False False False False]
# [False False False False False]]
e = np.eye(3)
# [[ 1. 0. 0.]
# [ 0. 1. 0.]
# [ 0. 0. 1.]]
f = np.diag([1,2,3])
# [[1 0 0]
# [0 2 0]
# [0 0 3]]
a = np.random.randint(0, 10, size=(2, 5)) # tirage uniforme d'entiers dans [0, 10[
print(a)
# [[8 2 6 2 7]
# [4 3 5 5 5]]
b = np.random.binomial(10, .3, (2, 5)) # simule (2, 5) valeurs d'une vad suivant une binomiale(10,.3)
print(b)
# [[1 1 2 3 3]
# [1 2 4 2 1]]
2015-2016 3/30
2016
PC* Python 1 Le module numpy
Si des données sont stockées dans un fichier texte avec délimiteur (format csv), on peut construire la
matrice de ces données avec la fonction np.genfromtxt. Supposons que le fichier data.csv contienne
les données suivantes
1,2,3,4,5
6,0,0,7,8
0,0,9,10,11
4/30 2015-2016
2016
PC* Python 1 Le module numpy
# 1
print(a.shape)
axis = 0
3
# (3,)
print(a[0])
5
# 2
axis = 1
# 2
print(b.shape)
axis = 0
11 13 17 19
# (3, 4)
print(b[0,1])
23 29 31 37
# 3
print(b[:,3])
# [ 7 19 37] axis = 1
2015-2016 5/30
2016
PC* Python 1 Le module numpy
c = np.array( range(24) ) # [[ 8 9]
c.shape = (3, 4, 2) # [10 11]
print (c) # [12 13]
# [[[ 0 1] # [14 15]]
# [ 2 3]
# [ 4 5]
# [ 6 7]] c[0,1,0]
2
=
# [[ 8 9] c[1,:,:]
is
ax
# [10 11]
# [12 13] 0 2 4 6
# [14 15]]
axis = 0
8 10 12 14
# [[16 17]
# [18 19]
16 18 20 22
# [20 21]
# [22 23]]]
print(c[1,:,:]) axis = 1
Si a est un tableau numpy, et b un tableau de booléens de même format, alors a[b] met en relation un
à un les éléments de a et ceux de b, en ne conservant que les éléments de a associés à la valeur True :
a = np.array(range(10))
a.shape = (2, 5)
print(a)
b = np.array([[ True, False, False, True, False],
[False, True, False, False, True]])
print(a[b])
# [0 3 6 9]
On verra au § III.1 qu’il est aisé de construire le tableau des booléens traduisant par exemple la
propriété : l’élément est divisible par 3.
b = a % 3 == 0
print(b)
[[ True False False True False]
[False True False False True]]
Bref, pour obtenir tous les éléments de a qui sont divisibles par 3, on écrira donc :
a [ a % 3 == 0 ]
6/30 2015-2016
2016
PC* Python 1 Le module numpy
# [[7 1 2 3 4]
# [5 6 7 8 9]]
a[0,:] = [8, 7, 6, 5, 4]
print(a)
# [[8 7 6 5 4]
# [5 6 7 8 9]]
a[ a % 2 == 0 ] /= 2
print(a)
# [[4 7 3 5 2]
# [5 3 7 4 9]]
Dans ce dernier exemple, les éléments pairs de a sont divisés par 2.
Remarque. C’est en général une mauvaise idée, mais si on souhaite malgré tout faire une copie d’un
tableau numpy, on utilise la méthode copy(), ou bien astype(dtype) déjà mentionnée.
2015-2016 7/30
2016
PC* Python 1 Le module numpy
Les opérations +, *, /, ==, etc s’appliquent aux tableaux numpy, mais TERME à TERME. C’est
cohérent avec la définition mathématique pour l’addition, mais ça ne l’est plus du tout pour la multi-
plication, les puissances etc.
a = np.random.randint(0, 10, (2, 5))
b = np.random.randint(1, 10, (2, 5))
print(a)
# [[0 9 0 6 6]
# [8 9 2 0 0]]
print(b)
# [[3 1 3 5 2]
# [8 7 7 1 6]]
print(a + b)
# [[ 3 10 3 11 8]
# [16 16 9 1 6]]
print(a * b)
# [[ 0 9 0 30 12]
# [64 63 14 0 0]]
print(a // b)
# [[0 9 0 1 3]
# [1 1 0 0 0]]
print(a / b)
# [[ 0. 9. 0. 1.2 3. ]
# [ 1. 1.28571429 0.28571429 0. 0. ]]
print(a ** b)
# [[ 0 9 0 7776 36]
# [16777216 4782969 128 0 0]]
print(a == b)
# [[False False False False False]
# [True False False False False]]
Les fonctions définies dans le module numpy sont universelles, ou vectorialisées, c’est-à-dire qu’elles
acceptent comme argument un tableau numpy et renvoient le tableau numpy des images. Utiliser des
fonctions vectorialisées permet de faire gagner des facteurs énormes en temps de calcul.
x = np.linspace(-1, 1, 18)
y = np.arcsin(x)
print(y)
# [-1.57079633 -1.080839 -0.87058477 -0.70372051 -0.55790704 -0.42438971
# -0.2985322 -0.1773996 -0.05885751 0.05885751 0.1773996 0.2985322
# 0.42438971 0.55790704 0.70372051 0.87058477 1.080839 1.57079633]
On peut vectoriser ses propres fonctions :
def f(x):
k, s = 0, 0
while s <= x:
k += 1
s += k
return k
8/30 2015-2016
2016
PC* Python 1 Le module numpy
print(f(9.56))
# 4
x = np.arange(1, 10, 2)
# print(f(x)) # déclenche une erreur
vf = np.vectorize(f)
print(vf(x))
# [2 3 3 4 4]
On peut utiliser les méthodes (ou les fonctions associées) a.max(), a.min(), a.sum(), a.prod(),
a.mean() (moyenne arithmétique), a.var() (variance), a.std() (écart-type).
a = np.random.randint(0, 10, (2,5))
print(a)
# [[8 5 0 1 3]
# [2 2 1 5 3]]
print(a.sum()) # ou encore np.sum(a)
# 30
print(a.sum(axis=0))
# [10 7 1 6 6]
print(a.sum(axis=1))
# [17 13]
print(a.mean())
# 3.0
print(a.mean(axis=0))
# [ 5. 3.5 0.5 3. 3. ]
print(a.mean(axis=1))
# [ 3.4 2.6]
print(a.max())
# 8
print(a.max(axis=0))
# [8 5 1 5 3]
print(a.max(axis=1))
# [8 5]
2015-2016 9/30
2016
PC* Python 1 Le module numpy
dont les significations sont immédiates. Pour cette dernière, la matrice doit être inversible pour que le
résultat soit cohérent.
a = np.array([[1,2,3],
[0,2,2],
[0,2,3]])
b = np.array([4,9,1])
print(np.linalg.solve(a,b))
# [ 3. 12.5 -8. ]
La fonction np.linalg.eig fournit un couple de deux matrices, la première étant le spectre de la
matrice, donné sous forme d’un vecteur où les valeurs propres multiples apparaissent autant de fois
que leurs multiplicités, et d’une matrice carrée dont les colonnes sont des vecteurs engendrant respecti-
vement les espaces propres de la matrice. On utilisera cette fonction dans le chapitre de mathématique
concernant la réduction des matrices.
a = np.array([[1,2,3],
[0,1,2],
[0,0,2]])
sp, p = np.linalg.eig(a)
print(sp)
# [ 1. 1. 2.]
print(p)
# [[ 1.00000000e+00 -1.00000000e+00 9.52579344e-01]
# [ 0.00000000e+00 1.11022302e-16 2.72165527e-01]
# [ 0.00000000e+00 0.00000000e+00 1.36082763e-01]]
Terminons par des opérations sur les tableaux : np.concatenate( (a, b), axis=0) permet d’accoler
les tableaux a et b dans la direction indiquée. np.column_stack((v1,v2,v3)) permet de construire
la matrice dont les colonnes sont les vecteurs passés en arguments.
a = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
b = np.array([[0,1,0],
[1,0,0],
[0,0,1]])
print(np.concatenate((a,b), axis=0))
# [[1 2 3]
# [4 5 6]
# [7 8 9]
# [0 1 0]
# [1 0 0]
# [0 0 1]]
print(np.concatenate((a,b), axis=1))
# [[1 2 3 0 1 0]
# [4 5 6 1 0 0]
# [7 8 9 0 0 1]]
v1 = np.array([1,2,3])
v2 = np.array([4,5,6])
v3 = np.array([1,0,0])
p = np.column_stack((v1,v2,v3))
print(p)
# [[1 4 1]
10/30 2015-2016
2016
PC* Python 1 Le module numpy
# [2 5 0]
# [3 6 0]]
Une classe Polynomial est disponible, et permet de manipuler les polynômes, qui sont représentés à
l’aide de la liste des coefficients classés par ordre croissant de degré. L’objet créé a un attribut coef, des
méthodes degree, roots, deriv, integ permettant d’accéder respectivement au degré, à des valeurs
approchées de racines, à la dérivée formelle, à une primitive formelle. On peut aussi utiliser l’objet
pour évaluer la fonction polynomiale associée.
from numpy.polynomial import Polynomial
p = Polynomial([1, 0, 1])
print(p.coef)
# [ 1. 0. 1.]
print(p.degree())
# 2
print(p.roots())
# [ 0.-1.j 0.+1.j]
dp = p.deriv()
print(dp.coef)
# [ 0. 2.]
ip = p.integ()
print(ip.coef)
# [ 0. 1. 0. 0.33333333]
print(p(0))
# 1.0
print(p(0+1j))
# 0j
2015-2016 11/30
(1) Vérifier qu’il n’y a qu’une solution à ce système. 2016
12/30
PC*
Exo 1 Pour cet exercice, on prend n = 1000000. On pourra aug- (2) En utilisant np.linalg.solve, déterminer cette solution.
menter ou diminuer cette valeur en fonction de la machine utilisée.
n (3) Vérifier le résultat obtenu en utilisant un produit matriciel.
(1) Calculer i sans utiliser numpy.
P
i=0 (4) Construire la matrice m de format 4 × 5, dont les colonnes sont
(2) Chronométrer le temps nécessaire pour le calcul précédent, par successivement les colonnes de a et b.
exemple en utilisant time.clock().
(3) Utiliser un tableau numpy et la méthode sum pour calculer à nou- (5) Appliquer à m la méthode du pivot de Gauss pour résoudre « à
veau la somme proposée. la main » le système proposé.
(4) Comparer le temps de calcul avec la méthode précédente.
Exo 5 On pose M = 20 et m = 10.
Exo 2
À un nombre quelconque c, on associe la suite (un )n définie par :
(1) Définir une matrice aléatoire a de taille 50 × 50.
(2) Déterminer la valeur Maxi,j |ai,j+1 − ai,j |. u0 = 0 et un+1 = u2n + c pour n > 0
(3) Que peut représenter cette valeur ?
S’il existe, on note k le plus petit entier tel que l’on ait 0 6 k 6 m et
Exo 3
|uk | > M .
(1) Définir une matrice aléatoire a de flottants, de taille 50 × 50 (si On définit alors la fonction f par :
on doit imprimer, on se limitera à 5 × 5).
(2) Compter le nombre de valeurs inférieures à 0.5. s’il existe
(
k
On pourra utiliser le fait que l’on peut sommer les booléens : f : c 7→
m+1 sinon
print(True+True)
# 2
print(False+False) (1) Donner le code définissant la fonction f .
# 0
(2) Tracer l’allure de la courbe représentative de la fonction f sur
(3) Remplacer toutes les valeurs inférieures à 0.5 par 0, et celles stric- [−2, 2].
x 1 + x3 + 2x4 = 1 (5) Quels paramètres peut-on modifier pour obtenir une meilleure
résolution ?
2x1 + x2 + x4 = 0
2016
PC*
Annexe A
2015-2016 13/30
Svi?QM
P`H
JS- S*- SaA- haA
*H+mH Ki`B+B2H
BKTQ`i MmKTv b MT
BKTQ`i MmKTvXHBMH; b H;
*`ûiBQM /2 Ki`B+2b
SQm` /û}MB` mM2 Ki`B+2- QM miBHBb2 H 7QM+iBQM ``v /m KQ/mH2 MmKTvX
GǶii`B#mi b?T2 /QMM2 H iBHH2 /ǶmM2 Ki`B+2 , MQK#`2 /2 HB;M2b- MQK#`2 /2 +QHQMM2bX PM T2mi `2/BK2MbBQMM2`
mM2 Ki`B+2- bMb KQ/B}2` b2b i2`K2b- ¨ HǶB/2 /2 H Kûi?Q/2 `2b?T2X
Xb?T2
Uk- jV
4 X`2b?T2UUj- kVV
``vU((R- k)-
(j- 9)-
(8- e))V
GǶ++ĕb ¨ mM i2`K2 /2 H Ki`B+2 b2 7Bi ¨ HǶB/2 /2 HǶQTû`iBQM /ǶBM/2t;2 (B- D) Qɍ B /ûbB;M2 H HB;M2 2i D
H +QHQMM2X ii2MiBQM- H2b BM/B+2b +QKK2M+2Mi ¨ xû`Q 5 § HǶB/2 /ǶBMi2`pHH2b- QM T2mi û;H2K2Mi `û+mTû`2`
mM2 T`iB2 /ǶmM2 Ki`B+2 , HB;M2- +QHQMM2- bQmb@Ki`B+2X _TT2H- ,# /ûbB;M2 HǶBMi2`pHH2 Qmp2`i ¨ /`QBi2 <<Ԑ ԑ<<-
, /ûbB;M2 HǶBMi2`pHH2 +QMi2MMi iQmb H2b BM/B+2b /2 H /BK2MbBQM +QMbB/û`û2X LQi2x H /Bzû`2M+2 2Mi`2 HǶBM/2tiBQM
T` mM 2MiB2` 2i T` mM BMi2`pHH2 `û/mBi ¨ mM 2MiB2`X
MTXx2`QbUUk-jVV
``vU(( yX- yX- yX)-
( yX- yX- yX))V
MTXQM2bUUj-kVV
``vU(( RX- RX)-
( RX- RX)-
( RX- RX))V
MTX2v2U9V
``vU(( RX- yX- yX- yX)-
( yX- RX- yX- yX)-
( yX- yX- RX- yX)-
( yX- yX- yX- RX))V
MTX/B;U(R-k-j)V
``vU((R- y- y)-
(y- k- y)-
(y- y- j))V
4 MTXQM2bUUk-jVV
" 4 MTXx2`QbUUk-jVV
MTX+QM+i2Mi2UU-"V- tBb4yV
``vU(( RX- RX- RX)-
( RX- RX- RX)-
( yX- yX- yX)-
( yX- yX- yX))V
MTX+QM+i2Mi2UU-"V-tBb4RV
``vU(( RX- RX- RX- yX- yX- yX)-
( RX- RX- RX- yX- yX- yX))V
*H+mH Ki`B+B2H
G2b QTû`iBQMb /ǶDQmi 2i /2 KmHiBTHB+iBQM T` mM b+HB`2 b2 7QMi p2+ H2b QTû`i2m`b Y 2i X
4 MTX``vU((R-k)- (j-9))V
" 4 MTX2v2UkV
Y j "
``vU(( 9X- kX)-
( jX- dX))V
SQm` 2z2+im2` mM T`Q/mBi Ki`B+B2H UHQ`b[m2 [m2 +2H 2bi TQbbB#H2V- BH 7mi 2KTHQv2` H 7QM+iBQM /QiX
4 MTX``vU((R-k)- (j-9))V
" 4 MTX``vU((R-R-R)- (k-k-k))V
MTX/QiU- "V
``vU(( 8- 8- 8)-
(RR- RR- RR))V
PM T2mi û;H2K2Mi miBHBb2` H Kûi?Q/2 /Qi [mB 2bi THmb T`iB[m2 TQm` +H+mH2` mM T`Q/mBi /2 THmbB2m`b Ki`B+2bX
X/QiU"V
``vU(( 8- 8- 8)-
(RR- RR- RR))V
X/QiU"VX/QiUMTXQM2bUUj-kVVV
``vU(( R8X- R8X)-
( jjX- jjX))V
H;XKi`BtnTQr2`U-jV
G i`MbTQbû2 bǶQ#iB2Mi p2+ H 7QM+iBQM i`MbTQb2X GǶ2tT`2bbBQM Xh `2MpQB2 mbbB H i`MbTQbû2 /2 X
MTXi`MbTQb2U"V
``vU((R- k)-
(R- k)-
(R- k))V
"Xh
``vU((R- k)-
(R- k)-
(R- k))V
G2 /ûi2`KBMMi- H2 `M; 2i H i`+2 /ǶmM2 Ki`B+2 bǶQ#iB2MM2Mi T` H2b 7QM+iBQMb /2i- Ki`Btn`MF /m KQ/mH2
MmKTvXHBMH; 2i i`+2 /m KQ/mH2 MmKTvX 1M}M H 7QM+iBQM BMp /m KQ/mH2 MmKTvXHBMH; `2MpQB2 HǶBMp2`b2 /2
H Ki`B+2 bǶBH 2tBbi2X
H;X/2iUV
@kXyyyyyyyyyyyyyyy9
H;XKi`Btn`MFUV
k
MTXi`+2UV
8
H;XBMpUV
Ki`BtU((@kX - RX )-
( RX8- @yX8))V
SQm` `ûbQm/`2 H2 bvbiĕK2 HBMûB`2 Ӷԧ ԑ HQ`b[m2 H Ki`B+2 Ӷ 2bi BMp2`bB#H2- QM T2mi 2KTHQv2` H 7QM+iBQM bQHp2
/m KQ/mH2 MmKTvXHBMH;X
# 4 MTX``vU(R-8)V
H;XbQHp2U- #V
``vU( jX- @RX)V
G 7QM+iBQM 2B;pHb /m KQ/mH2 MmKTvXHBMH; `2MpQB2 H2b pH2m`b T`QT`2b /2 H Ki`B+2X SQm` Q#i2MB` 2M THmb
H2b p2+i2m`b T`QT`2b bbQ+Bûb- BH 7mi 2KTHQv2` H 7QM+iBQM 2B;X
H;X2B;pHbUV
``vU(@yXjdkk3Rjk- 8Xjdkk3Rjk)V
G 4 H;X2B;UV
G
U``vU(@yXjdkk3Rjk- 8Xjdkk3Rjk)V- ``vU((@yX3k98e939- @yX9R8Ndj8e)-
( yX8e8ded9e- @yXNyNjdedR))VV
G(R)X/QiUMTX/B;UG(y)VVX/QiUH;XBMpUG(R)VV
``vU(( RX- kX)-
( jX- 9X))V
m 4 MTX``vU(R-k)V
p 4 MTX``vU(j-9)V
MTXp/QiUm- pV
RR
m 4 MTX``vU(R-y-y)V
p 4 MTX``vU(y-R-y)V
MTX+`QbbUm- pV
``vU(y- y- R)V
BKTQ`i Ki?
BKTQ`i KiTHQiHB#XTvTHQi b THi
BKTQ`i MmKTv b MT
7`QK KTHniQQHFBibXKTHQij/ BKTQ`i t2bj.
G 7QM+iBQM THQi /K2i /2 MQK#`2mb2b QTiBQMb /2 T`ûb2MiiBQMX G2 T`Kĕi`2 +QHQ` T2`K2i /2 +?QBbB` H +QmH2m`
U^;^ , p2`i- ^`^ , `Qm;2- ^#^ , #H2mVX SQm` /û}MB` H2 bivH2 /2 H HB;M2- QM miBHBb2 HBM2bivH2 U^@^ , HB;M2 +QMiBMm2-
^@ @^ , HB;M2 /Bb+QMiBMm2- ^ ,^ , HB;M2 TQBMiBHHû2VX aB QM p2mi K`[m2` H2b TQBMib /2b HBbi2b- QM miBHBb2 H2 T`Kĕi`2
K`F2` U^Y^- ^X^- ^Q^- ^p^ /QMM2Mi /Bzû`2Mib bvK#QH2bVX
/27 7UtV ,
`2im`M Ki?XbBMUtV
AH 2bi ;ûMû`H2K2Mi THmb BMiû`2bbMi /ǶmiBHBb2` H2b 7QM+iBQMb /m KQ/mH2 MmKTv- THmiƬi [m2 +2HH2b /m KQ/mH2 Ki?-
+` 2HH2b T2`K2ii2Mi /2 i`pBHH2` mbbB #B2M p2+ /2b b+HB`2b [mǶp2+ /2b i#H2mt UQM H2b TT2HH2 7QM+iBQMb
mMBp2`b2HH2bVX
/27 7UtV ,
`2im`M MTXbBMUtV
lM2 mi`2 bQHmiBQM +QMbBbi2 ¨ miBHBb2` H 7QM+iBQM p2+iQ`Bx2 /m KQ/mH2 MmKTv [mB T2`K2i /2 i`Mb7Q`K2` mM2
7QM+iBQM b+HB`2 2M mM2 7QM+iBQM +T#H2 /2 i`pBHH2` p2+ /2b i#H2mtX AH 2bi +2T2M/Mi #2m+QmT THmb 2zB++2
/ǶmiBHBb2` /B`2+i2K2Mi /2b 7QM+iBQMb mMBp2`b2HH2bX
/27 7UtV ,
`2im`M Ki?XbBMUtV
7 4 MTXp2+iQ`Bx2U7V
AH 2bi ¨ MQi2` [m2 H2b QTû`i2m`b Tvi?QM UY- @- - 2i+XV T2mp2Mi bǶTTHB[m2` ¨ /2b i#H2mt- BHb ;Bbb2Mi HQ`b i2`K2
¨ i2`K2X BMbB H 7QM+iBQM 7 /û}MB2 +B@/2bbQmb 2bi mM2 7QM+iBQM mMBp2`b2HH2- 2HH2 T2mi i`pBHH2` mbbB #B2M p2+
/2mt b+HB`2b [mǶp2+ /2mt i#H2mt 2i KāK2 p2+ mM b+HB`2 2i mM i#H2mX
/27 7Ut- vV ,
`2im`M MTXb[`iUt k Y v kV
7Uj- 9V
8Xy
7UMTX``vU(R- k- j)V- MTX``vU(9- 8- e)VV
``vU( 9XRkjRy8ej- 8Xj38Re93R- eXdy3kyjNj)V
7UMTX``vU(R- k- j)V- 9V
``vU( 9XRkjRy8ej- 9X9dkRj8N8- 8X )V
/27 tUiV ,
`2im`M MTXbBMUk iV
/27 vUiV ,
`2im`M MTXbBMUj iV
t 4 t2bj.UTHiX7B;m`2UVV
h 4 MTX`M;2Uy- k MTXTB- yXyRV
s 4 MTX+QbUhV
u 4 MTXbBMUhV
w 4 h
tXTHQiUs- u- hV
THiXb?QrUV
h`+û /2 bm`7+2b
SQm` i`+2` mM2 bm`7+2 /Ƕû[miBQM ԩ ԕ ԧ Ԩ - QM `ûHBb2 /Ƕ#Q`/ mM2 ;`BHH2 2M ԧ Ԩ TmBb QM +H+mH2 H2b pH2m`b
/2 ԩ +Q``2bTQM/Mi mt TQBMib /2 +2ii2 ;`BHH2X PM 7Bi 2MbmBi2 H2 i`+û p2+ H 7QM+iBQM THQinbm`7+2X
t 4 t2bj.UTHiX7B;m`2UVV
/27 7Ut-vV ,
`2im`M t k @ v k
s 4 MTX`M;2U@R- R- yXykV
u 4 MTX`M;2U@R- R- yXykV
s- u 4 MTXK2b?;`B/Us- uV
w 4 7Us- uV
tXTHQinbm`7+2Us- u- wV
THiXb?QrUV
/27 7Ut-vV ,
`2im`M t k Y v k Y t v
s 4 MTX`M;2U@R- R- yXyRV
u 4 MTX`M;2U@R- R- yXyRV
s- u 4 MTXK2b?;`B/Us- uV
w 4 7Us- uV
THiXtBbU^2[mH^V
THiX+QMiQm`Us- u- w- (yXR-yX9-yX8)V
THiXb?QrUV
G THmT`i /2b 7QM+iBQMb T`ûb2Miû2b /Mb +2ii2 b2+iBQM Mû+2bbBi2Mi HǶBKTQ`i /m KQ/mH2 MmKTv 2i /2 bQmb@KQ/mH2b
/m KQ/mH2 b+BTvX G2b BMbi`m+iBQMb Mû+2bbB`2b mt 2t2KTH2b bmBpMib bQMi HBbiûb +B@/2bbQmbX
BKTQ`i MmKTv b MT
BKTQ`i b+BTvXQTiBKBx2 b `2bQH
BKTQ`i b+BTvXBMi2;`i2 b BMi2;`
BKTQ`i KiTHQiHB#XTvTHQi b THi
/27 7UtV ,
`2im`M t k @ k
`2bQHX7bQHp2U7- @kXV
``vU(@RX9R9kRj8e)V
`2bQHX7bQHp2U7- kXV
``vU( RX9R9kRj8e)V
.Mb H2 +b /ǶmM2 7QM+iBQM ԕ ¨ pH2m`b p2+iQ`B2HH2b- QM miBHBb2 H 7QM+iBQM `QQiX S` 2t2KTH2- TQm` `ûbQm/`2 H2
bvbiĕK2 MQM HBMûB`2
ԧϵ ਲ Ԩ ϵ
ব
ԧ Ԩ ਲ
/27 7UpV ,
`2im`M p(y) k @ p(R) k @ R- p(y) Y k p(R) @ j
bQH4`2bQHX`QQiU7- (@8-8)V
bQHXbm++2bb
h`m2
bQHXt
``vU(@jXjyN9yRy3- jXR89dyy89)V
/27 7UtV ,
`2im`M MTX2tTU@tV
BMi2;`X[m/U7- y- RV
UyXejkRky8833k388d3- dXyRdN9dN3d8yj38e2@R8V
BMi2;`X[m/U7- y- MTXBM7V
URXyyyyyyyyyyyyyyyk- 8X39keydyj38d3yyd2@RRV
/27 7Ut- iV ,
`2im`M i t
ԧங ԣ ਲԧ ԣ ਲ Ԩ ԣ
ব
Ԩங ԣ ԧ ԣ ਲ Ԩ ԣ
/27 7Ut- iV ,
`2im`M MTX``vU(@t(y)@t(R)- t(y)@t(R))V
SQm` `ûbQm/`2 mM2 û[miBQM /Bzû`2MiB2HH2 b+HB`2 /ǶQ`/`2 k /2 bQHmiBQM ԧ- QM /2KM/2` H `ûbQHmiBQM /m bvbiĕK2
ԧԣ
/Bzû`2MiB2H /ǶQ`/`2 R biBb7Bi T` ԍ ԣ ন X
ԧங ԣ
LQK#`2b +QKTH2t2b
Svi?QM +H+mH2 p2+ H2b MQK#`2b +QKTH2t2bX G2 MQK#`2 BK;BMB`2 Tm` Ԙ b2 MQi2 RDX G2b ii`B#mib `2H 2i BK;
T2`K2ii2Mi /ǶQ#i2MB` H T`iB2 `û2HH2 2i H T`iB2 BK;BMB`2X G 7QM+iBQM #b +H+mH2 H2 KQ/mH2 /ǶmM +QKTH2t2X
4 k Y jD
# 4 8 @ jD
#
URNYNDV
X`2H
kXy
XBK;
jXy
#bUV
jXey888Rkd89ejN3Ne
Pour
Sm` +`û2` mM TQHvMƬK2- BH 7mi HBbi2` b2b +Q2zB+B2Mib T` Q`/`2 /2 /2;`û +`QBbbMiX S` 2t2KTH2- TQm` H2 TQHvMƬK2
ԍ ϯ ԍ ਲ -
T 4 SQHvMQKBHU(@j- k- y- R)V
PM T2mi HQ`b miBHBb2` +2ii2 p`B#H2 +QKK2 mM2 7QM+iBQM TQm` +H+mH2`- 2M mM TQBMi [m2H+QM[m2- H pH2m` /2 H
7QM+iBQM TQHvMƬK2 bbQ+Bû2X *2ii2 7QM+iBQM T2mi ;B` û;H2K2Mi bm` mM i#H2m /2 pH2m`b- 2HH2 +H+mH2 HQ`b H
Texte
pH2m` /2 H 7QM+iBQM TQHvMƬK2 2M +?+mM /2b TQBMib BM/B[mûbX
TUyV
@jXy
TU(R- k- j)V
``vU( yX- NX- jyX)V
GǶii`B#mi +Q27 /QMM2 ++ĕb mt +Q2zB+B2Mib Q`/QMMûb T` /2;`û +`QBbbMi c BMbB TX+Q27(B) +Q``2bTQM/ m
+Q2zB+B2Mi /m i2`K2 /2 /2;`û BX G Kûi?Q/2 /2;`22 `2MpQB2 H2 /2;`û /m TQHvMƬK2 HQ`b [m2 `QQib +H+mH2 b2b
`+BM2bX
TX+Q27
``vU(@jX- kX- yX- RX)V
TX+Q27(R)
kXy
TX/2;`22UV
j
TX`QQibUV
``vU(@yX8@RXe83jRk9D- @yX8YRXe83jRk9D- RXyYyXD )V
G Kûi?Q/2 /2`Bp `2MpQB2 mM MQmp2m TQHvMƬK2- /û`Bpû /m TQHvMƬK2 BMBiBHX *2ii2 Kûi?Q/2 T`2M/ 2M `;mK2Mi
7+mHiiB7 mM 2MiB2` TQbBiB7 BM/B[mMi H2 MQK#`2 /2 /û`BpiBQMb ¨ 2z2+im2`X .2 H KāK2 KMBĕ`2 H Kûi?Q/2 BMi2;
BMiĕ;`2 H2 TQHvMƬK2- 2HH2 T`2M/ mM T`Kĕi`2 QTiBQMM2H bmTTHûK2MiB`2 /QMMMi H +QMbiMi2 /ǶBMiû;`iBQM
¨ miBHBb2`- +2 T`Kĕi`2b T2mi āi`2 mM2 HBbi2 2M +b /ǶBMiû;`iBQM KmHiBTH2 c H2b +QMbiMi2b /ǶBMiû;`iBQM MQM
T`û+Bbû2b bQMi T`Bb2b û;H2b ¨ xû`QX
TX/2`BpUVX+Q27
``vU( kX- yX- jX)V
TX/2`BpUkVX+Q27
``vU( yX- eX)V
TX/2`BpU8VX+Q27
``vU(@yX)V
TXBMi2;UVX+Q27
``vU( yX - @jX - RX - yX - yXk8)V
TXBMi2;UR- kVX+Q27 O BMiö;`2` mM2 7QBb p2+ H +QMbiMi2 k
``vU( kX - @jX - RX - yX - yXk8)V
TXBMi2;Uk- (R- k)VX+Q27 O BMiö;`2` /2mt 7QBb
``vU( kX - RX - @RX8 - yXjjjjjjjj- yX -
yXy8 )V
4 SQHvMQKBHU(R- k- R)V
# 4 SQHvMQKBHU(8- j)V
T 4 k # Y SQHvMQKBHU(@d- k)V
TX+Q27
``vU( jX- k3X- kkX- eX)V
UT kVX+Q27
``vU( NX- Re3X- NReX- Rke3X- 3kyX- ke9X- jeX)V
GǶQTû`i2m` f T2`K2i /2 /BpBb2` mM TQHvMƬK2 T` mM b+HB`2X SQm` /BpBb2` /2mt TQHvMƬK2b BH 7mi miBHBb2`
HǶQTû`i2m` ff [mB `2MpQB2 H2 [mQiB2Mi c HǶQTû`i2m` W +H+mH2 H2 `2bi2X
UT f kVX+Q27
``vU( RX8- R9X - RRX - jX )V
[ 4 T ff
` 4 T W
[X+Q27
``vU( RyX- eX)V
`X+Q27
``vU(@dX- kX)V
U[ Y `VX+Q27
``vU( jX- k3X- kkX- eX)V
G2b 7QM+iBQMb /Ƕû+?MiBHHQMM;2 2i /2 ;ûMû`iBQM /2 pH2m`b Tb2m/Q@HûiQB`2b bQMi `2;`QmTû2b /Mb H #B#HBQi?ĕ[m2
MmKTvX`M/QKX
BKTQ`i MmKTvX`M/QK b `/
GǶ2tT`2bbBQM `M/BMiU- #V T2`K2i /2 +?QBbB` mM 2MiB2` m ?b`/ /Mb HǶBMi2`pHH2 <<Ԑ ԑ<<X G 7QM+iBQM `M/BMi
T`2M/ mM i`QBbBĕK2 T`Kĕi`2 QTiBQMM2H T2`K2iiMi /Ƕ2z2+im2` THmbB2m`b iB`;2b 2i /2 `2MpQv2` H2b `ûbmHii bQmb
7Q`K2 /2 i#H2m Qm /2 Ki`B+2X
`/X`M/BMiUR- dV O mM HM+2` /2 /ö
k
`/X`M/BMiUR- d- kyV O ky HM+2`b /2 /ö
``vU(8- k- k- j- R- 8- 8- j- e- 9- k- e- e- 9- j- k- 9- 8- R- j)V
`/X`M/BMiUR- d- U9- 8VV O ky HM+2`b /2 /ö bQmb 7Q`K2 /^mM2 Ki`B+2 9t8
``vU((j- e- R- e- j)-
(8- R- e- k- k)-
(j- R- k- k- 8)-
(8- k- e- R- 9))V
G 7QM+iBQM `M/QK `2MpQB2 mM `û2H +QKT`Bb /Mb HǶBMi2`pHH2 < <X aB ԍ /ûbB;M2 H p`B#H2 HûiQB`2 +Q``2bTQM@
/Mi m `ûbmHii /2 H 7QM+iBQM `M/QK- HQ`b TQm` iQmi Ԑ 2i ԑ /Mb < > p2+ Ԑ ହ ԑ- QM ԅ Ԑ ହ ԍ ԑ ԑ ਲ ԐX
*2ii2 7QM+iBQM ++2Ti2 mM T`Kĕi`2b QTiBQMM2H T2`K2iiMi /2 `ûHBb2` THmbB2m`b iB`;2b 2i /2 H2b `2MpQv2` bQmb
7Q`K2 /2 i#H2m Qm /2 Ki`B+2X
`/X`M/QKUV
yXNRe3yNkyRjdy3y9N
`/X`M/QKU9V
``vU( yXN3d933Nd- yX3e83NNdk- yX8je3jyyR- yX8ye3dj3e)V
`/X`M/QKUUk-9VV
``vU(( yXd3kjye33- yX3j3yj8ke- yXekydd98d- yXkd9jk3RN)-
( yXee8kkj3d- yXdRk83je8- yXk83Rj993- yXk33jjy39))V
G 7QM+iBQM #BMQKBH T2`K2i /2 bBKmH2` mM2 p`B#H2 HûiQB`2 bmBpMi mM2 HQB #BMQKBH2 /2 T`Kĕi`2b M 2i TX
1HH2 T2`K2i /QM+ û;H2K2Mi /2 bBKmH2` mM2 p`B#H2 HûiQB`2 bmBpMi mM2 HQB /2 "2`MQmHHB /2 T`Kĕi`2b T 2M
T`2MMi bBKTH2K2Mi ԝ X *2ii2 7QM+iBQM T`2M/ mM i`QBbBĕK2 T`Kĕi`2 QTiBQMM2H [mB +Q``2bTQM/- +QKK2 TQm`
H2b 7QM+iBQMb T`û+û/2Mi2b- m MQK#`2 /2 pH2m`b ¨ Q#i2MB`X
`/X#BMQKBHURy- yXj- dV
``vU(k- k- k- k- k- 9- j)V
`/X#BMQKBHUR- yXe- kyV
``vU(y- R- R- R- R- y- R- R- y- y- y- R- R- R- R- y- R- R- R- R)V
`/X;2QK2i`B+UyX8- 3V
``vU(R- R- j- R- j- k- 8- R)V
`/XTQBbbQMU9- R8V
``vU(8- k- j- 9- e- y- 8- j- R- 8- R- 8- N- 9- e)V
Annexe B
2015-2016 27/30
©2012-2013 - Laurent Pointal Mémento v1.2.2.1
Mémento Python 3
Licence Creative Commons Paternité 2
' accents possibles mais à éviter int(15.56) troncature de la partie décimale (round(15.56) pour entier arrondi)
' mots clés du langage interdits float("-11.24e8")
' distinction casse min/MAJ
str(78.3) et pour avoir la représentation littérale repr("Texte")
☺ a toto x7 y_max BigOne voir au verso le formatage de chaînes, qui permet un contrôle fin
☹ 8y and
bool utiliser des comparateurs (avec ==, !=, <, >, …), résultat logique booléen