- memento - mpsi/pcsi - cahier-de-prepa.fr

15
- Memento - MPSI/PCSI

Upload: others

Post on 22-Oct-2021

22 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: - Memento - MPSI/PCSI - cahier-de-prepa.fr

26 août 2021

- Memento -

MPSI/PCSI

Table des matières1 Commandes de base 3

1.1 Assigner/afficher/demander/aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Opérations/fonctions usuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Types Python 42.1 Les types les plus courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Zoom sur les types itérables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1 Listes/tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2.2 Générer des listes/tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2.3 Slicing sur les itérables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.4 Chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Matrices, opérations principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Algorithmique 83.1 Boucles for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 Test if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 Fonctions def . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.4 Boucles while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4 Compléments 124.1 Tracés 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.2 Autres tracés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.3 Manipulation de fichiers/répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1/15 (c) Lycée Cézanne, Aix-en-Provence

Page 2: - Memento - MPSI/PCSI - cahier-de-prepa.fr

Index

append , 5

bool , 4chdir , 14close , 14complex , 4copy , 5count , 5, 7def , 10dir , 3dot , 2, 8float , 4for , 8function , 4getcwd , 14

global , 10

help , 3

input , 3len , 5linalg , 7

linspace , 12

listdir , 14

np. dot , 8

np. shape , 8

np.identity , 8np.zeros , 8ones , 6open , 14os , 14plt.plot , 12pop , 5

print , 3range , 6readlines , 14readline , 14replace , 7

reshape , 6return , 10reverse , 5savefig , 14set , 4shape , 2, 5, 8

split , 7str , 4sum , 5tuple , 4type , 3

while , 11write , 14zeros , 6

Bouclefor , 8while , 11

Chaînes de caractères, 7Compréhension (génération par), 6Conversion, 4

Dictionnaires, 7

FonctionsPython, 10

in place, 3itérables, 4

Lambda (fonction), 4Listes, 5

matplotlib, 12Matrices, 7

Opérationsmatrices, 7usuelles, 3

Slicing, 6

Tableaux, 5Test if , 9

2

Page 3: - Memento - MPSI/PCSI - cahier-de-prepa.fr

1 Commandes de base

1.1 Assigner/afficher/demander/aide

Action Entrée Sortie

Assignation x=1 La variable x prendla valeur 1

Assignation multiple a,b=0,1 Pareil que a=0 et b=1Incrémenter x+=y Change x en x+y in placeDécrémenter x-=y Change x en x-y in place

Convertir x=truc(y) Si possible, convertit y en le type truc ( int,str ,etc.)Afficher

(sortie écran) print ("salut") Affichage de salut à l’écran (et c’est tout)

Poser une question age= input ("Quel âge as tu ?")

(question entre "" optionnelle)

Stocke la réponse dans la variable age"qui sera de type str

pour la convertir en entier age=int(age)

Demander le type type (objet) type Python

Catalogue objet dir (objet) Liste fonctions/méthodes relatives

Aide en ligne help (commande) Aide

Commentaires # Passe le reste de la ligneen mode commentaire

• Remarque : ça veut dire quoi in place ? Chaque variable pointe vers une case mémoire qui recèle soncontenu. Par exemple, si l’on tape x=4 , Python crée une case mémoire contenant la valeur 4 , vers laquelle la variable x pointera.

➣une modification in place du type x+=1 change directement la valeur dans la case mémoire verslaquelle pointe x (en l’occurence en 5 ) ;

➣la commande x=x+1 semble analogue, mais en fait fonctionne en deux étapes :

crée une nouvelle case mémoire contenant la valeur x+1 ; repointe la variable x vers cette nouvelle case : plus gourmand en mémoire, on préfèrera donc systé-matiquement les modifications in place.

1.2 Opérations/fonctions usuelles

Action Python Exemple

Addition + 2+3 → 5Multiplication ∗ 2 ∗ 3 → 6Puissance ∗∗ 2 ∗∗ 3 → 8

Division décimaux / 5/2 → 2.5 en Python 3

Quotient DE // 7/3 → 2 en 2.7

Reste DE % 7 % 3 → 1Addition dans Rn

array +np.array([1,2])+np.array([2,3])

→ np.array([3,5])Addition/concaténationsur les list ou str

+ [1,2]+[3,4] → [1,2,3,4]

Multiplication/concaténationlist ou str

∗ [1,2]*3 → [1,2,1,2,1,2]

Fonction usuelle Nom usuel

pas classique : np.sqrt(2) (racine)

np.floor(4.5) (partie entière)

abs(-3) (valeur absolue)

3/15 (c) Lycée Cézanne 2021/2022

Page 4: - Memento - MPSI/PCSI - cahier-de-prepa.fr

2 Types Python

2.1 Les types les plus courants

• Remarque : pour les fonctions, on pourra en voir plus en section ?? page ??.

Maths Ex. maths Type Ex. Python Itérable ?

Booléen Vrai ou Faux bool True/False Non

Entier 12 int 12 NonDécimal 1,2 float 1.2 NonComplexe 1 + 2i complex 1+2j Non

Fonction f : x 7→ e−x function f = lambda x : exp(-x) Non

Liste [1,2,3] list l=[1,2,3] l[1] → 2

Liste (de listes) [[1,2],[3,4]] list l=[[1,2],[3,4]]

{

l[0] → [1,2]l[1][0] → 3

Ensemble s = {1, 2, 3} set s={1,2,3} s[2] → 3

p-uplet t=(1,2,3) tuple t=(1,2,3) t[0] → 1Chaîne

caractères Texte normal str mot="Salut" mot[1] → "a"

Tableaux T =

[ [1 2 3

]

[4 5 6

]

]

np.array T=np.array([[1,2,3],[4,5,6]])

{

T[1,2] → 6T[0 :2,1] → [2,5]

Conversion Voir remarque

• Remarque :❶ ( Conversion d’un objet en un autre type) a nouveau=nouveautype(ancien) . Exemples :

➣conversion ensemble → liste : a=list({1,2,3}) → a= [1,2,3] ;

➣conversion décimal → chaine de caractères : mot=str(12) → mot="12" .

❷ liste des objets vides : [ ] liste vide, { } ensemble vide, "" chaine vide.

2.2 Zoom sur les types itérables

• Les listes ( list ), tableaux ( array ), et chaînes de caractères ( str ) sont des itérables :

❶ on peut accéder au i-ème élément d’un iterable avec iterable[i] , "à la numérotation qui part

de 0. Voici l’indexation de la chaîne mot=’Monty Python’ avec des zones de slicing :

"comme le montre le dessin ci-dessus, l’indexation commence à 0 et pas 1 donc si iterable=’Monty Python’ ,

iterable[1] renverra ’o’ c’est parfois très piégeux...

a. À l’exception de la conversion list → tableau multi-dimensionnel, voir la commande np.reshape en section 2.2.2.

4/15 (c) Lycée Cézanne 2021/2022

Page 5: - Memento - MPSI/PCSI - cahier-de-prepa.fr

❷ on peut les parcourir avec des boucles (les itérer), deux syntaxes possibles :

### Option 1for e lement in i t e r a b l e :

#−>[t ap e r l e s i n s t r u c t i o n s r e l a t i v e s à e lement ]### Option 2for i in range (len ( i t e r a b l e ) ) : #l e n=l ongu eu r

#−>[t ap e r l e s i n s t r u c t i o n s r e l a t i v e s à i e t /ou i t e r a b l e [ i ]

Voici chacune de ces syntaxes destinées à afficher chaque lettre d’une chaîne de caractère mot :

### Option 1

for l e t t r e in mot :print ( l e t t r e )

### Option 2

for i in range (len (mot ) ) :print (mot [ i ] )

• Remarque : la première a l’air plus simple, mais la seconde permet de manipuler les élémentsmot[i] en même temps que leur emplacement i .

2.2.1 Listes/tableaux

Action Entrée Sortie

Accéder à un élément liste[0],liste[i],liste[-1] Premier, i-ème,dernier élément

Longueur d’une liste len ( [1,2,3] ) 3

Rajouter à une liste a. append (4) Rajoute 4 à la fin in place de a

Concaténer listes [1,2,3]+[4] [1,2,3,4]

Répéter liste [1,2] ∗ 3 [1,2,1,2,1,2]

Expulser un élément a. pop () Expulse le dernier élément de a in place

Trier a.sort() Trie a par ordre croissant in place

Symétrie centrale a. reverse () Inverse les éléments d’une liste in place

Tester l’appartenance 1 in [1,2,3] ou 5 in [1,2,3] True ou False

Sommer sur une liste sum ( [1,2,-2]) 1

Format tableau tableau. shape donne nbre de lignes, de colonnes

Extraire (sclicing) 1-d Si a=[0,1,2,3,4,5] a[0 :3] → [0,1,2]

Extraire tableau 2d Si a=np.array( [ [1,2,3] , [4,5,6] ] ) a[0 :2,1 :3] → np.array([[2, 3], [5, 6]])

Compter apparitions Si a=[1,1,2,3] a. count (1) → 2

Créer une copie de a b=np. copy (a) Crée une copie b indépendante de a

2.2.2 Générer des listes/tableaux

• Remarque : on s’assurera de bien maîtriser la génération par compréhension (filtrée ou pas) exposéedans le tableau qui suit, terriblement pratique pour créer des listes sans passer par une boucle.

5/15 (c) Lycée Cézanne 2021/2022

Page 6: - Memento - MPSI/PCSI - cahier-de-prepa.fr

Action Entrée Sortie

Générer liste d’entiers [[a; b[[ range (6) ou range(1,4) [0,1,3,4,5] ou [1,2,3]"pas le dernier

Générer subdivision de [0, 10]à 3 pts np.linspace(0,10,3) np.array([ 0., 5., 10.])

Générer subdivision de [0, 10]avec un pas de 2 np.arange(0,10,2) np.array([0, 2, 4, 6, 8])

Génération par compréhension [i**2 for i in range(5)] [0,1,4,9,16]Génération filtréeici filtre = être pair [i**2 for i in range(5) if i%2 == 0] [0, 4, 16]

Multiplication/concaténation [0]*3 ou [ [1,2]*2 ] [0,0,0] ou [[1,2],[1,2]]

Générer tableau de zéros np. zeros ((2,3)) np.array([ [0,0,0],[0,0,0] ])

Générer tableau de uns np. ones ((2,3)) np.array([ [1,1,1],[1,1,1] ])

Changer format tableau np. reshape (np.array([1,2,3,4]),(2,2)) np.array([[1, 2], [3, 4]])

2.2.3 Slicing sur les itérables

• Le slicing (découpage) est un moyen très rapide pour extraire un itérable d’un autre.

➣Exemple sur un tableau 6x1 : si L=[a,b,c,d,e,f] , L[2 :5] sera la liste [c,d,e] .

Le schéma ci-dessus illustre d’autres slicing possibles.

➣Exemple sur un tableau 6x6 : ça marche pareil...

6/15 (c) Lycée Cézanne 2021/2022

Page 7: - Memento - MPSI/PCSI - cahier-de-prepa.fr

2.2.4 Chaînes de caractères

Action Entrée Sortie

Accéder à une lettre mot[0],mot[i],mot[-1] Cf. listes

Longueur d’une chaîne len("python") 6Concaténer chaînes "pyt"+"hon" "python"Aller à la ligne " Salut \ n ça va ?" Va à la ligne à l’affichage

Répéter chaîne "Ok" ∗ 3 "OkOkOk"Tester l’inclusion "py" in "python" ou "pi" in "python" True ou FalseRemplacer dans "python". replace ("py","zz") "zzthon"Découper selon si mot="a b c" alors mot. split (" ") → liste ["a","b","c"]

Compter apparition si a="coco" a. count ("o") → 2

2.3 Dictionnaires

• La structure de dictionnaire permet d’associer des clés à des valeurs, par exemple :dict= { 1 : "Premier" , 2 : "Deuxième", "Troisième" : 3 }

Ici les clés sont 1,2,"Troisième" et "Premier" est la valeur associée à la clé 1 .

Action Entrée Sortie

Afficher valeur dict[1] "Premier"

Lister les items dict.items() [(1, ’Premier’), (2, ’Deuxième’), (’Troisième’, 3)]

Lister les clés dict.keys() [1, 2, ’Troisième’]

Lister les valeurs dict.values() [’Premier’, ’Deuxième’, 3]

Ajouter dict[4]="Quatrième" None

Supprimer une entrée par clé del dict[2] None

Vérifier la présence d’une clé dict.has_key("Troisième") True

2.4 Matrices, opérations principales

• Les matrices peuvent être vus comme des tableaux 2-d, par exemple M =

(1 23 4

)

peut se déclarer en

Python :

➣comme un tableau 2-d : M= np.array( [ [1,2] ,[3,4] ] ) ;

➣ou plus simplement comme une liste de listes : M= [ [1,2] ,[3,4] ] , mais"la commande d’addition

+ n’aura pas l’effet attendu (sur des listes, ça concatène !).

• Avec la matrice M =

(1 23 4

)

déclarée par M=np.array([[1,2],[3,4]]) , "le module linalg se charge

par from scipy import linalg :

7/15 (c) Lycée Cézanne 2021/2022

Page 8: - Memento - MPSI/PCSI - cahier-de-prepa.fr

Action Entrée Sortie

Format np. shape (M) Tuple lignes/colonnes ici ( 2, 2 )

Coeff. ligne 0 colonne 1 M[0][1] ou M[0,1] 2

Ligne 0 M[0] [1,2]

Colonne 1 M[ :,1] np.array([2,4]) (le : décrit l’itérable)

Addition M+M "seulement si M est déclaré en np.arrayLoi externe 0.5*M "seulement si M est déclaré en np.arrayInverse linalg.inv(M) np.array([[ 0.5, 0.5], [-0.5, 0.5]])

Transposée M.T np.array([[1,3],[2,4]])

"Produit matriciel np. dot (A,B) Produit A×B

Déterminant, trace linalg.det(M),linalg.tr(M) 5,-2

Génerer matrice nulle N= np.zeros ( (2,3) ) N devient(0 0 00 0 0

)

Matrice identité np.identity (3) I3

Générer matrice diagonale np.diag(liste)Matrice diagonale à

coeff. formés par listeReformater N=np.reshape(M,(1,4)) N=np.array([1,2,3,4])

Puissance np.linalg.matrix_power(M,3) Puissance 3ème

Résolution MX = Y np.linalg.solve(M,Y) Donne Y en ligne pour X entré en ligne

Valeurs propres np.linalg.eigvals(M) Ligne des VP (avec répétition)

VP + Vecteur propres np.linalg.eig(M)Ligne des VP,

matrice des−−→V P en ligne, unitaires

associés dans l’ordre aux VP

3 Algorithmique

3.1 Boucles for

• Principe général :

for compteur in i t e r a b l e :#l e s deux p o i n t s c r e e n t une i n d e n t a t i o n#−>[t ap e r l e s i n s t r u c t i o n s a e x é c u t e r pour chaque va l e u r de l ’ i t e r a b l e ]

# r e v e n i r s u r l ’ i n d e n t a t i o n marque l a f i n de l a bouc l e

❶ Typiquement, l’itérable est un range(a,b) ("c’est l’intervalle d’entiers [[a ; b − 1]]) ou une liste ;

❷ Pour parcourir les indices d’une liste, on écrit for compteur in range(len(liste)) : ou alors

for element in liste : .

• Exemple :❶ vous trouverez en section 2.2 page 4 les deux rédactions pour parcourir les itérables avec une boucle.❷ pour afficher a2 pour a dans [[0 ; 4]]..

>>> for a in range (5 ) :print( a ∗∗2)

014916

8/15 (c) Lycée Cézanne 2021/2022

Page 9: - Memento - MPSI/PCSI - cahier-de-prepa.fr

Ici, le compteur est a qui décrit l’itérable est la liste range(5)=[0,1,2,3,4] de type liste .

❸ Compter a le nombre de "o" dans "bonjour" :

>>> mot , v a l e u r=’ bon jou r ’ ,0>>> for l e t t r e in mot :

if l e t t r e==’ o ’ :v a l e u r+=1

>>> va l e u r2

3.2 Test if

• Principe général :

1 if c o n d i t i o n 1 :2 #in d e n t a t i o n3 #−>[t ap e r l e s i n s t r u c t i o n s a e f f e c t u e r s i l a c o n d i t i o n 1 e s t ok ]4 elif c o n d i t i o n 2 : # op t i o nn e l , s e r a examine s i l a c o n d i t i o n 1 n ’ e s t pas ok5 #−>[t ap e r l e s i n s t r u c t i o n s a e f f e c t u e r s i l a c o n d i t i o n 2 e s t ok ]6 else : # op t i o nn e l , s i r i e n n ’ a marche7 #−>[t ap e r l e s i n s t r u c t i o n s a e f f e c t u e r s i r i e n n ’ a marche ]

Typiquement, les conditions sont des booléens (càd une assertion vraie= True ou fausse= False ) définispar une condition de type :

➣ a ==b (test d’égalité b) entre deux éléments de même type ;

➣ a !=b (test de différence) entre deux éléments de même type ;

➣ a in b (test d’appartenance) pour savoir si a est un élément c de b ;

➣ a <=b ou a >=b pour comparer deux éléments qui peuvent l’être ;

➣des liaisons and (et), or (ou), not (négation) entre une ou plusieurs des propositions précédentes.

• Exemple :❶ un test de divisibilité par 3 :

1 x=322 if x%3==0: # r a p p e l % e s t l e r e s t e de l a d i v i s i o n3 print ( " d i v i s i b l e par 3 ! " )

qui n’affiche rien à la compilation

❷ un test prévoyant plus de possibilités :

1 x=322 if x%3==0: # r a p p e l % e s t l e r e s t e de l a d i v i s i o n3 print ( " d i v i s i b l e par 3 ! " )4 elif x%2=0:5 print ( " d i v i s i b l e par 2 ! " )6 else :7 print ( " d i v i s i b l e n i par 2 , n i par 3 ! " )

qui affichera "divisible par 2 !" à la compilation.

a. Peut se faire directement avec la méthode count .b. L’égalité dans un test se rédige par DEUX symboles « = », pas naturel au début et source de beaucoup de plantages...c. Pour les str , teste si a est une sous-chaine de b , par exemple "bon" in "bonjour" est True .

9/15 (c) Lycée Cézanne 2021/2022

Page 10: - Memento - MPSI/PCSI - cahier-de-prepa.fr

3.3 Fonctions def

• Principe général.

def f o n c t i o n ( en t r e e1 , en t r e e1 , . . . ) : # i l peut y a v o i r une s e u l e entrée ou aucune#l e s deux p o i n t s c r e e n t une i n d e n t a t i o n#−>[ i n s t r u c t i o n s a e x e c u t e r ]# ATTENTION : l a p rocedu re s ’ a r r e t e au p r em i e r r e t u r nreturn ( s o r t i e )

Schématiquement, la fonction est la flèche dans le schéma suivant :

Entrées

résultat

Effectue les instructions

dans l’indentationreturn résultat

• Remarque :

❶ "le programme sort de la fonction dès qu’il tombe sur un return , ce qui peut donner des sur-

prises s’ils sont mal placés dans les indentations ;

❷ les variables autres que celles de l’entrée déclarées dans la procédure sont des variables dites locales :utilisées de manière interne à la procédure, effacées à la sortie (on parle de portée locale). Si l’onveut conserver l’état d’une variable x (n’existant pas ailleurs dans le programme) après la sortieon la déclare comme globale dans la procédure par un global x situé juste après la premièreindentation.

• Exemple :

❶ Fonction f définie par :

➣Entrée : une variable x ;

➣Sortie : la valeur x+1 .

def f ( x ) : #I c i l ’ e n t r e e s e resume a une v a r i a b l e xreturn ( x+1) #I c i l a s o r t i e s e resume a une v a r i a b l e ( con tenan t x+1)

• Remarque :

➣l’appel f(4) retournera 5 ;

➣x 7→ x+ 1 peut aussi être définie par la lambda-fonction f = lambda x : x+1

❷ Fonction compte définie par :

➣Entrée : un tuple mot,lettre avec mot une chaîne de caractère, lettre une chaîne réduite àun élément ;

➣Sortie : le nombre de fois que la lettre apparaît dans le mot .

10/15 (c) Lycée Cézanne 2021/2022

Page 11: - Memento - MPSI/PCSI - cahier-de-prepa.fr

def compte (mot , l e t t r e ) : # i c i deux e n t r e e sr e s u l t a t=0for i n d i c e in range (len (mot ) ) : #pour p a r c o u r i r t ou s l e s i n d i c e s

if mot [ i n d i c e ]== l e t t r e :r e s u l t a t+=1

return r e s u l t a t

• Exemple : l’appel compte(’marseille’,’e’) renverra l’entier 2.

❸ Fonction test définie par :

➣Entrée : une tuple L,n avec L une liste et n un entier ;

➣Sortie : un booléen True si n est un élément de la liste, False sinon.

1 def t e s t (L , n ) :2 for i in range(len ( L ) ) : # au t r e op t i o n " f o r e lement i n L : "3 if L [ i ]==n : # au t r e op t i o n " i f e l ement==n ; "4 return True5 return Fa l s e

• Remarque :

➣par exemple, l’appel test([1,2,2,1],3) renverra False .

➣le retour peut intervenir dans un test, par exemple if test(L,n)==True : ;

➣placer un return dans l’indentation du if ligne 3 permet une sortie de boucle/fonction dès quele résultat est positif, ce qui permet de ne pas tout parcourir dans ce cas et gagne du temps.

3.4 Boucles while

• Principe général : dans ce qui suit, bool est un booléen càd pouvant être seulement True ouFalse , par exemple c’est un test a>0 .

while bool :#l e s deux p o i n t s c r e e n t une i n d e n t a t i o n#−>[ i n s t r u c t i o n s a e x e c u t e r t a n t que boo l e s t True ]#ATTENTION s ’ a s s u r e r que boo l s e r a Fa l s e au bout d ’ un moment . . .#. . . s i n on bouc l e i n f i n i e e t p l a n t a g e .

"il faut s’assurer que la condition bool sera False au bout d’un moment, au risque d’avoir une boucleinfinie faisant planter l’ordi (voir principe de Terminaison section ??).

• Exemple : pour une suite définie par u0 = 0, on définit un+1 = u2n+ 1 et on veut déterminer le plus

petit indice n tel que un > 50.

va l e u r , i n d i c e =0,0while va l e u r <50: #tan t que [NEGATION DE CE QUE L ’ON VEUT]

i n d i c e+=1v a l e u r=va l e u r ∗∗2+1print ( ’ Rang ’+str ( i n d i c e )+’ , s u i t e= ’+str ( v a l e u r ) )

# ce qu i s u i t s e r a e x e cu t e en s o r t i e de bouc l e vu l ’ i n d e n t a t i o n :print ( ’ Le p r em i e r rang ou l on depas s e 50 e s t ’+str ( i n d i c e −1) )# c e l a donne :Rang 1 , s u i t e= 1Rang 2 , s u i t e= 2

11/15 (c) Lycée Cézanne 2021/2022

Page 12: - Memento - MPSI/PCSI - cahier-de-prepa.fr

Rang 3 , s u i t e= 5Rang 4 , s u i t e= 26Rang 5 , s u i t e= 677Le p r em i e r i n d i c e ou l on depas s e 50 e s t 4

C’est la variable valeur qui prend les valeurs successives de la suite, à ne pas confondre avec la variableindice qui joue ici le rôle de n.

4 Compléments

4.1 Tracés 2d

• Recommandé d’importer le package en entier, sans préfixe par :

import matplotlib.pyplot as plt

• Principe général d’un tracé :

plt.plot (

liste abscisses︷ ︸︸ ︷

[x1, . . . , xn] ,

liste ordonnées︷ ︸︸ ︷

[y1, . . . , yn] )

trace la ligne brisée joignant les points M1(x1, y1), . . . , Mn(xn, yn)

• Remarque :❶ typiquement (voir exemple ci-dessous) la liste des abscisses est générée comme dans la section 2.2.2

page 5, avec un linspace et celle des ordonnées est une λ-fonction de la première ;

❷ "sur certaines installations, les graphiques ne s’affichent qu’à la commande plt.show() ;

❸ "dans les syntaxes qui suivent, la partie options est facultative. Les options se piochent parmile tableau qui suit celui ci-dessous :

Commandes Syntaxe

Générer une légende axe des x (ou y) plt.xlabel("texte")

Générer une grille plt.grid()

Générer une ligne brisée de sommetsd’abscisse/ordonnées connues

plt.plot(list_abscisses,list_ordonnées,options)voir plus bas pour les options de tracé

Générer un tracé de y = f(x) sur x dans [a, b]discrétisé à 20 points

x=np.linspace(a,b,20)plt.plot(x,f(x),options)

Courbe paramétrée (x(t), y(t)) pour t dans [a, b]discrétisé à 20 points

t=np.linspace(a,b,20)plt.plot(x(t),y(t),options)

Réglages axes plt.xlim(xmin, xmax) plt.ylim(ymin, ymax)

Afficher les tracés plt.show()

Histogramme d’une liste liste plt.hist(liste)

Vider les tracés générés plt.clf() (clear figure)

• Options de tracé :

12/15 (c) Lycée Cézanne 2021/2022

Page 13: - Memento - MPSI/PCSI - cahier-de-prepa.fr

Options syntaxe

Epaisseur ligne linewidth="4" pour 4 pixelsStyle tiret ou pointillés linestyle="dashed" ou "dotted"

Couleur color="blue"

Associer une légende label="Texte" (faire legend(loc=0)avant pour un bon emplacement

Désactiver lignes linestyle="none"

Activer marqueurs aux sommets marker="o",markersize=choixautres marqueurs ∗, x

• Un petit exemple :

import numpy as npfrom ma t p l o t l i b . p yp l o t import ∗f = lambda x : np . s i n ( x ) # d e c l a r a t i o n f o n c t i o n##### BEL EMPLACEMENT DE LEGENDESlegend ( l o c =0)##### LEGENDES SUR LES AXESx l a b e l ( "x" )y l a b e l ( "y" )##### GENERATION D’UN TRIANGLE A(0 , 0 ) ,B( p i , 0 ) ,C( p i /2 ,1)absc =[0 , np . p i , np . p i /2 ,0 ]ordo =[0 ,0 ,1 ,0 ]t r i a n g l e=p l o t ( absc , ordo , l i n e s t y l e="dashed " , marker="o" , l a b e l=" T r i a n g l e " )##### GENRATION y=f ( x )a b s c i s s e s=np . l i n s p a c e (0 ,2∗ p i , 5 0 ) # d i s c r e t i s a t i o n à 50 p t so rdonnee s=f ( a b s c i s s e s ) #g e n e r a t i o n o rdonnee sg raphe_s inus=p l o t ( a b s c i s s e s , ordonnees , l i n ew i d t h="3" , l a b e l=" s i n u s " )l egend ( )##### ET MAINTENANT ON AFFICHEshow ( )

donne :

4.2 Autres tracésOn peut copier/coller/adapter des codes à partir de la page :https://matplotlib.org/2.0.2/gallery.html

13/15 (c) Lycée Cézanne 2021/2022

Page 14: - Memento - MPSI/PCSI - cahier-de-prepa.fr

4.3 Manipulation de fichiers/répertoires

• Gestion du répertoire courant avec le module import os .

• Remarque : dans les fichiers, le symbole \n désigne un retour à la ligne.

Action Entrée Sortie

Refermer/sauvegarder truc.close() Comme dit

Gérer répertoire courant import os Charge le module adéquat

Liste fichiers ds répertoire courant os. listdir () Comme dit

Afficher répertoire courant os. getcwd () Comme dit

Changer répertoire courant os. chdir ("C :\skynet\Document\") Déplace le répertoire courantà l’adresse indiquée

"il y a parfois un bug sur la donnée des chemins ; par exemple "C :\Users\Documents\" peut poser

problème. L’explication est que le groupe \U est une commande reconnue et automatiquement executéepar l’éditeur/encodeur (qui bugge car elle est hors-propos). Le bug se résout en rajoutant un « r » audébut du chemin, en l’ocurrence en changeant en :r"C :\Users\Documents\"

Action Entrée Sortie

Charger en mode lecture fichier= open ("chemin","r") Stockage dans fichieren mode "Read"

Charger fichier enmode écriture ("efface contenu)

truc=open("fichier","w") Stockage dans fichieren mode "Write"

Lire la prochaine ligne fichier. readline ()"Salut !\n"

(un \n est un retour à la ligne)Charger fichier en

mode append =écriture possibleou création si n’∃ pas

truc=open("fichier","a") Stockage dans fichieren mode "Write"

Lire la prochaine ligne fichier. readline ()"Salut !\n"

(un \n est un retour à la ligne)

Génère la listede toutes les lignes

fichier.readlines()["Salut !\n","Ca va ?"]

(un \n est un retour à la ligne)

Stocker ligne ligne=fichier. readlines ()[0] Sauvegarde 1ère ligne

Séparer ligne en mots ligne.split(" ") Sépare selon espaces(ou autre)

Écrire dans fichier fichier. write ("Youpi !") Rajoute "Youpi !" dans truc"penser à refermer

Sauver fichier fichier. close () Sauvegardele répertoire courant

Sauver figure savefig ("nom_fichier")Sauvegarde la figure dans

le répertoire courant(format .png )

• Exemple : récupération des phrases dans un fichier, création de la liste des premiers mots.

14/15 (c) Lycée Cézanne 2021/2022

Page 15: - Memento - MPSI/PCSI - cahier-de-prepa.fr

import os # pe rmet tan t de g e r e r l e r e p e r t o i r e . Les commandes r e l a t i v e s

os . c h d i r ( r ’C: \ Use r s \ Skynet I I \Documents \Cours 2014−2015\ I n f o ’ )

f i c h i e r=open ( ’ t e x t e . t x t ’ , ’ r ’ ) # ouv e r t u r e mode l e c t u r el i g n e s=f i c h i e r . r e a d l i n e s ( ) #Cr e a t i o n de l a l i s t e des l i g n e s

p r emie r smot s =[ ]for l i g n e in l i g n e s :

l i g n e=l i g n e . s p l i t ( " " ) # s é p a r a t i o n de l a ph ra se en mots , on coupe auxe s pa c e s

p r emie r smot s . append ( l i g n e [ 0 ] )

15/15 (c) Lycée Cézanne 2021/2022