Vous êtes sur la page 1sur 4

©2012-2013 - Laurent Pointal Mémento v1.2.2.

1
Licence Creative Commons Paternité 2

entier, flottant, complexe, booléen, chaîne


int 783 0 -192
Types
de base
Mémento Python 3
float 9.23 0.0 -1.7e-6
complex 2.7+3.1j 1j 10-6 Types Conteneurs (listes, tuples, chaînes)
bool True False séquences ordonnées, accès index rapide, valeurs répétables
str "Un\nDeux" 'L\'âme' list [1,5,9] ["x",11,8.9] ["mot"] []
retour à la ligne ' échappé tuple (1,5,9) 11,"y",7.4 ("mot",) ()
multiligne
"""X\tY\tZ non modifiable expression juste avec des virgules
1\t2\t3""" str en tant que séquence ordonnée de caractères
non modifiable,
séquence ordonnée de caractères tabulation

pour noms de variables, Identificateurs type(expression) Conversions


fonctions, modules, classes…
a‥zA‥Z_ suivi de a‥zA‥Z_0‥9
int("15") on peut spécifier la base du nombre entier en 2 paramètre nd

' 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

Affectation de variables list("abc") utilise chaque élément de ['a','b','c']


la séquence en paramètre
x = 1.2+8+sin(0)
valeur ou expression de calcul
":".join(['toto','12','pswd']) 'toto:12:pswd'
nom de variable (identificateur)
chaîne de jointure séquence de chaînes
y,z,r = 9.2,-7.6,"bad"
noms de conteneur de plusieurs "Un blanc final \n".strip() "Un blanc final"
variables valeurs (ici un tuple)
incrémentation "des mots espacés".split() ['des','mots','espacés']
x+=3 décrémentation x-=2 "1,4,8,2".split(",") ['1','4','8','2']
x=None valeur constante « non défini » chaîne de séparation

Indexation des listes, tuples, chaînes de caractères...


index négatif -6 -5 -4 -3 -2 -1 len(lst) 6
index positif 0 1 2 3 4 5 accès individuel aux éléments par [index]
lst=[11, 67, "abc", 3.14, 42, 1968] lst[1]→67 lst[0]→11 le premier
tranche positive 0 1 2 3 4 5 6 lst[-2]→42 lst[-1]→1968 le dernier
tranche négative -6 -5 -4 -3 -2 -1 accès à des sous-séquences par [tranche début:tranche fin:pas]
lst[:-1]→[11,67,"abc",3.14,42] lst[1:3]→[67,"abc"]
lst[1:-1]→[67,"abc",3.14,42] lst[-3:-1]→[3.14,42]
lst[::2]→[11,"abc",42] lst[:3]→[11,67,"abc"]
lst[:]→[11,67,"abc",3.14,42,1968] lst[4:]→[42,1968]
Indication de tranche manquante → à partir du début / jusqu'à la fin.
Sur les séquences modifiables, utilisable pour suppression del lst[3:5] et modification par affectation lst[1:4]=['hop',9]

Logique booléenne Blocs d'instructions bloc d'instructions exécuté Instruction conditionnelle


Comparateurs: < > <= >= == != instruction parente: uniquement si une condition est vraie
≤ ≥ = ≠ if expression logique:
bloc d'instructions 1…
a and b et logique ⁝ bloc d'instructions
indentation !

les deux en même temps


a or b ou logique instruction parente: combinable avec des sinon si, sinon si... et un seul sinon final.
l'un ou l'autre ou les deux bloc d'instructions 2… if x==42:
not a non logique
⁝ # bloc si expression logique x==42 vraie
True valeur constante vrai print("vérité vraie")
elif x>0:
False valeur constante faux instruction suivante après bloc 1 # bloc sinon si expression logique x>0 vraie
print("positivons")
else:
☝ nombres flottants… valeurs approchées ! angles en radians Maths # bloc sinon des autres cas restants
print("ça veut pas")
Opérateurs: + - * / ** from math import sin,pi…
× ÷ ab
÷ entière reste ÷
sin(pi/4)→0.707… Complexes Opérations spécifiques
cos(2*pi/3)→-0.4999… z=1+2j aux entiers
(1+5.3)*2→12.6 z.real
acos(0.5)→1.0471… z.imag 17 % 5 reste et
abs(-3.2)→3.2 sqrt(81)→9.0 √ z.conjugate() 17 // 5 quotient
abs(z) dans la div. eucl. de 17 par 5
round(3.57,1)→3.6 log(e**2)→2.0 etc. (cf doc)
bloc d'instructions exécuté Instruction boucle conditionnelle bloc d'instructions exécuté pour Instruction boucle itérative
tant que la condition est vraie chaque élément d'un conteneur ou d'un itérateur
while expression logique: for variable in séquence:
s = 0
bloc d'instructions bloc d'instructions
i = 1 initialisations avant la boucle Parcours des valeurs de la séquence
s = "Du texte" initialisations avant la boucle
condition avec au moins une valeur variable (ici i) cpt = 0
while i <= 100: variable de boucle, valeur gérée par l'instruction for
# bloc exécuté tant que i ≤ 100 for c in s:
i=100 Comptage du nombre
if c == "e":
s = s + i**2
i = i + 1 ☝ faire varier la variable
s= ∑ i 2 cpt = cpt + 1
de e dans la chaîne.

de condition !
i=1 print("trouvé",cpt,"'e'")
boucle sur dict/set = boucle sur séquence des clés
print("somme:",s) résultat de calcul après la boucle
utilisation des tranches pour parcourir un sous-ensemble de la séquence
☝ attention aux boucles sans fin ! Parcours des index de la séquence
contrôle de boucle : ' changement de l'élément à la position
break sortie immédiate continue itération suivante ' accès aux éléments autour de la position (avant/après)
lst = [11,18,9,12,23,4,17]
perdu = []
for idx in range(len(lst)): Bornage des valeurs
Affichage / Saisie val = lst[idx] supérieures à 15,
print("v=",3,"cm :",x,",",y+4) mémorisation des
if val> 15:
valeurs perdues.
perdu.append(val)
éléments à afficher : valeurs littérales, variables, expressions lst[idx] = 15
Options de print: print("modif:",lst,"-modif:",perdu)
' sep=" " (séparateur d'éléments, défaut espace) Parcours simultané index et valeur de la séquence:
' end="\n" (fin d'affichage, défaut fin de ligne) for idx,val in enumerate(lst):
' file=f (print vers fichier, défaut sortie standard)
s = input("Directives:") très utilisé pour les Génération de séquences d'entiers
boucles itératives for par défaut 0 non compris
☝ input retourne toujours une chaîne, la convertir vers le type range([début,] fin [,pas])
désiré (cf encadré Conversions au recto).
range(5) 0 1 2 3 4
Opérations sur conteneurs range(3,8) 3 4 5 6 7
len(c)→ nb d'éléments range(2,12,3) 2 5 8 11
min(c) max(c) sum(c) (listes, tuples, chaînes)
range retourne un « générateur », faire une conversion
sorted(c) → copie triée en liste pour voir les valeurs, par exemple:
val in c → booléen, opérateur in de test de présence (not in d'absence) print(list(range(4)))
enumerate(c)→ itérateur sur (index,valeur)
Spécifique aux conteneurs de séquences (listes, tuples, chaînes) :
reversed(c)→ itérateur inversé c*5 → duplication c+c2 → concaténation nom de la fonction (identificateur) Définition de fonction
c.index(val) → position c.count(val)→ nb d'occurences paramètres nommés
def nomfct(p_x,p_y,p_z):
☝ modification de la liste originale Opérations spécifiques aux listes """documentation"""
lst.append(item) ajout d'un élément à la fin # bloc instructions, calcul de res, etc.
lst.extend(seq) ajout d'une séquence d'éléments à la fin
lst.insert(idx,val) insertion d'un élément à une position
return res valeur résultat de l'appel.
si pas de résultat calculé à
lst.remove(val) suppression d'un élément à partir de sa valeur ☝ les paramètres et toutes les
lst.pop(idx) suppression de l'élément à une position et retour de la valeur variables de ce bloc n'existent retourner : return None
lst.sort() lst.reverse() tri / inversion de la liste sur place que dans le bloc et pendant l'appel à la fonction (« boite noire »)
Appel de fonction
Listes par compréhension r = nomfct(3,i+2,2*i)
lst = [2*i for i in range(10)] un argument par paramètre
lst = [i for i in range(20) if i%2 == 0] récupération du résultat renvoyé (si nécessaire)
lst = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Ce mémento est fourni à titre indicatif. Il ne faut le considérer :
ni comme exhaustif (en cas de problème sur un exercice particulier, si une
stockage de données sur disque, et relecture Fichiers fonction ou une commande indispensable était absente de la liste,
f = open("fic.txt","r",encoding="utf8") l'interrogateur pourrait aider le candidat),
ni comme exclusif (une fonction ou une commande absente de cette liste
n'est pas interdite : si un candidat utilise à très bon escient d'autres
variable nom du fichier mode d'ouverture encodage des fonctions MAIS sait aussi répondre aux questions sur les fonctions de base,
fichier pour sur le disque, ' 'r' lecture (read) caractères pour les il n'y a pas de problème),
les opérations chemin, relatif ' 'w' écriture (write) fichiers textes: ni comme un minimum à connaître absolument (l'examinateur n'attend
ou absolu ' 'a' ajout (append)… utf8 ascii pas du candidat qu'il connaisse parfaitement toutes ces fonctions et ces
latin1 … commandes).
en écriture chaîne vide si fin de fichier en lecture Les fonctions et commandes présentées doivent simplement permettre de faire
les exercices proposés aux candidats.
f.write("coucou") s = f.read(4)si nb de caractères L'examinateur n'attend pas du candidat une connaissance encyclopédique du
☝ fichier texte → lecture / écriture lecture ligne pas précisé, lit tout langage Python, mais une utilisation raisonnée des principes algorithmiques et
de chaînes uniquement, convertir suivante le fichier une mise en pratique des connaissances de base.
de/vers le type désiré s = f.readline() L'utilisation de l'aide en ligne est encouragée, mais ne doit pas masquer une
f.close() ☝ ne pas oublier de refermer le fichier après son utilisation ! ignorance sur ces aptitudes.
Aide
très courant : boucle itérative de lecture des lignes d'un fichier texte : help(a) → aide sur a dir(a) → liste d'attributs de a F1
for ligne in f : help("module.obj")→ aide sur obj de module, sans avoir
bloc de traitement de la ligne besoin d'importer le module
Mémento numérique Python 3

import numpy as np → charge le module numpy sous le nom np

Construction de tableaux (de type ndarray) Conversion ndarray <-> liste


np.zeros(n)→ crée un vecteur dont les n V = np.array([1,2,3])→ V : vecteur (1 2 3)
composantes sont nulles
np.zeros((n,m))→ crée une matrice n × m, L = V.tolist() → L : liste [1, 2, 3]
dont les éléments sont nuls
np.eye(n)→ crée la matrice identité d'ordre n
np.linspace(a,b,n)→ crée un vecteur de
M = np.array([[1,2],[3,4]])→ M : matrice ( )
1 2
3 4
n valeurs régulièrement espacées de a à b L = M.tolist() → L : liste [[1, 2], [3,4]]
np.arange(a,b,dx)→ crée un vecteur de
valeurs de a incluse à b exclue avec un pas dx
Extraction d'une partie de matrice
M.shape → tuple donnant les dimensions de M M[i], M[i,:] → ligne de M d'index i
M.size → le nombre d'éléments de M M[:,j] → colonne de M d'index j
M.ndim → le nombre de dimensions de M
M[i:i+h,j:j+l] → sous-matrice h × l
Copier un tableau avec la méthode copy :
M.sum() → somme de tous les éléments de M
M.min() → plus petit élément de M
M2 = M1.copy()
M.max() → plus grand élément de M
argument axis optionnel : 0 → lignes, 1 → colonnes : M1+M2, M1*M2, M**2 → opérations « terme-à-terme »
M.sum(0)→ somme des lignes c*M → multiplication de la matrice M par le scalaire c
M.min(0) → plus petits éléments, sur chaque colonne M+c → matrice obtenue en ajoutant le scalaire c à chaque terme de M
M.max(1) → plus grands éléments, sur chaque ligne V1.dot(V2) → renvoie le produit scalaire de deux vecteurs
np.dot(V1,V2)
import numpy.linalg as la M.dot(V) → renvoie le produit d'une matrice par un vecteur
la.det(M)→ déterminant de la matrice carrée M np.dot(M,V)
la.inv(M) → inverse de M M1.dot(M2) → renvoie le produit de deux matrices
la.eigvals(M) → valeurs propres de M np.dot(M1,M2)
la.matrix_rank(M)→ rang de M M.transpose() → renvoie une copie de M transposée
la.matrix_power(M,n)→ M n (n entier) np.transpose(M) (ne modifie pas M)
la.solve(A,B)→ renvoie X tel que A X = B
M.trace() → renvoie la trace de M
np.trace(M)
import scipy.integrate as spi
spi.odeint(F,Y0,LT) Fonctions mathématiques usuelles
→ renvoie une solution numérique du problème de np.exp, np.sin, np.cos, np.sqrt etc.
Cauchy Y'(t) = F(Y(t), t ) , où Y est un vecteur → fonctions qui s'appliquent sur des réels ou des complexes, mais aussi sur
d'ordre n, avec la condition initiale Y(t0) = Y0, des vecteurs et des matrices (s'appliquent à chaque terme), qui sont
pour les valeurs de t dans la liste LT de longueur k optimisées en durée de calcul.
commençant par t0, sous forme d'une matrice n× k
Rappel : ce mémento est fourni à titre indicatif. Il ne faut le considérer ni comme exhaustif,
spi.quad(f,a,b) → renvoie une évaluation
b ni comme exclusif, ni comme un minimum à connaître absolument (l'examinateur n'attend
numérique de l'intégrale : ∫ f (t)dt pas du candidat qu'il connaisse parfaitement toutes ces fonctions et ces commandes).
a
Mémento numérique Scilab

Calcul matriciel et vectoriel


Construction de tableaux Définition d'un vecteur, d'une matrice
zeros(1,n) → crée un vecteur-ligne dont les n U = [1,2,3] → U : liste = vecteur-ligne ( 1 2 3 )
composantes sont nulles

()
1
zeros(n,m) → crée une matrice n × m, dont les V = [1;2;3] → V : vecteur-colonne 2
éléments sont nuls
3
eye(n,n) → crée la matrice identité d'ordre n
linspace(a,b,n) → crée un vecteur-ligne de
n valeurs régulièrement espacées de a à b
M = [1,2;3,4] → M : matrice
1 2
3 4( )
a:dx:b → crée un vecteur-ligne de valeurs de
a incluse à b incluse avec un pas dx size(M) → vecteur-ligne des dimensions de M
length(M) → le nombre d'éléments de M
sum(M) → somme de tous les éléments de M
min(M) → plus petit élément de M Extraction d'une partie de matrice
max(M) → plus grand élément de M M(i,:) M(i,1:$) → ligne de M d'index i (vecteur-ligne)
deuxième argument optionnel :
"r"→ sur chaque colonne, renvoie un vecteur-ligne M(:,j) M(1:$,j) → colonne de M d'index j (vecteur-colonne)
"c"→ sur chaque ligne, renvoie un vecteur-colonne
sum(M,"r")→ somme des lignes M(i:i+h,j:j+l) → sous-matrice (h + 1 ) × ( l + 1 )
min(M,"c")→ plus petits éléments, de chaque ligne
max(M,"r")→ plus grands, de chaque colonne Remarque sur les fonctions mathématiques usuelles
Algèbre linéaire exp, sin, cos, sqrt etc.
→ fonctions qui s'appliquent sur des réels ou des complexes, mais aussi sur
trace(M) → trace de la matrice carrée M des vecteurs et des matrices (s'appliquent à chaque terme), qui sont
det(M) → déterminant de la matrice carrée M optimisées en durée de calcul.
inv(M) → inverse de M
spec(M) → valeurs propres de M M1+M2 → somme des deux matrices
rank(M) → rang de M
M^n → Mn c*M → multiplication d'une matrice M par un scalaire c
linsolve(A,B)→ renvoie X tel que A X = B M1.*M2, M.^2 → opérations « terme-à-terme »
M+c → matrice obtenue en ajoutant le scalaire c à chaque terme de M
M' → transposée de la matrice M
Intégration numérique
V' → passage d'un vecteur-ligne à un vecteur-colonne, et inversement
ode(Y0,t0,LT,F) M1*M2 → produit (matriciel) des deux matrices
→ renvoie une solution numérique du problème de
Cauchy Y'(t) = F(t ,Y(t)) , où Y est un vecteur M*V → produit d'une matrice par un vecteur-colonne
d'ordre n, avec la condition initiale Y(t0) = Y0,
V1'*V2 → produit scalaire de deux vecteurs-colonnes
pour les valeurs de t dans la liste LT de longueur k,
sous forme d'une matrice n× k
Rappel : ce mémento est fourni à titre indicatif. Il ne faut le considérer ni comme exhaustif,
intg(a,b,f)→ renvoie une évaluation b ni comme exclusif, ni comme un minimum à connaître absolument (l'examinateur n'attend
numérique de l'intégrale : ∫ f (t)dt pas du candidat qu'il connaisse parfaitement toutes ces fonctions et ces commandes).
a

Vous aimerez peut-être aussi