Cours de Python Niveau MPSI/PCSI 1.Introduction Python est un langage de programmation objet interprété. Son origine est le langage de script du système d’exploitation Amoeba (1990). Pour résumer Python en quatre points forts. Qualité : L’utilisation de Python permet de produire facilement du code évolutif et maintenable et offre les avantages de la programmation orientée-objet. Productivité : Python permet de produire rapidement du code compréhensible en reléguant nombre de détails au niveau de l’interpréteur. Portabilité : La disponibilité de l’interpréteur sur de nombreuses plates-formes permet l’exécution du même code sur un PDA ou un gros système Intégration : L’utilisation de Python est parfaitement adaptée l’intégration de composants écrit dans un autre langage de programmation (C, C++, Java avec Jython). Embarquer un interpréteur dans une application permet l’intégration de scripts Python au sein de programmes. Quelques caractéristiques intéressantes : langage interprété (pas de phase de compilation explicite) pas de déclarations de types (déclaration à l’affectation) gestion automatique de la mémoire (comptage de références) programmation orienté objet, procédural et fonctionnel par nature dynamique et interactif possibilité de générer du byte-code (améliore les performances par rapport à une interprétation perpétuelle) interactions standards (appels systèmes, protocoles, etc.) intégrations avec les langages C et C++ Python, comme la majorité des langages dit de script, peut être utilisé aussi bien en mode interactif qu’en mode script / programme. Dans le premier cas, il y a un dialogue entre l’utilisateur et l’interprète : les commandes entrées par l’utilisateur sont évaluées au fur et à mesure. Pour une utilisation en mode script les instructions à évaluer par l’interprète sont sauvegardées, comme n’importe quel programme informatique, dans un fichier. Dans ce second cas, l’utilisateur doit saisir l’intégralité des instructions qu’il souhaite voir évaluer à l’aide de son éditeur de texte favori, puis demander leur exécution à l’interprète. Les fichiers Python sont identifiés par l’extension .py. 2.Calcul avec python : | |
>>>a=10 # affectation de la valeur 10 à la variable a >>> a, b, c,d=2 , 4, 12, ’abc’ # affectation au même temps les valeurs 2, 4, 12 et ‘abc’ aux variables a, b, c et d >>> print('a= ',a," b= ",b," c= ",c, ," d= ",d) ('a= ', 2, ' b= ', 4, ' c= ', 12, d=’abc’ >>> e=2*a+b >>> e 8 | |
Les opérateurs mathématiques: + : addition numérique ou concaténation des chaines de caractères - : soustraction * : multiplication / : division A.LAGRIOUI Page 1 |
Cours de Python Niveau MPSI/PCSI
4. Variables 4.1 Définition : Une variable est une zone de la mémoire dans laquelle on stocke une valeur; cette variable est définie par un nom. (pour l’ordinateur, il s’agit en fait d’une adresse :une zone de la mémoire). Les noms de variables sont des noms que vous choisissez. Ce sont des suites de lettres (non accentuées) ou de chiffres. Le premier caractère est obligatoirement une lettre. (Le caractère _ est considéré comme une lettre). Python distingue les minuscules des majuscules. 4.2 Noms de variables et mots réservés : Un nom de variable ne peut pas être un mot réservé du langage : | |||||||||||
and | Assert | break | class | continue | def | del | elif | else | except | ||
exec | Finally | for | from | global | if | import | in | is | lambda | ||
not | Or | pass | | raise | return | try | while | yield | |||
4.3Type de variable Le type d’une variable correspond à la nature de celle-ci. Les 3 types principaux dont nous aurons besoin sont : les entiers, les flottants et les chaines de caractères. Il existe de nombreux autres types (e.g. complex pour les nombres complexes), c’est d’ailleurs un des gros avantages de Python. 4.4Déclaration et assignation En python, la déclaration d’une variable et son assignation (c.à.d. la première valeur que l’on va stocker dedans) se fait en même temps.
Dans cet exemple, nous avons stocké un entier dans la variable a, mais il est tout a fait possible de stocker des réels ou des chaines de caractères :
A.LAGRIOUI Page 4 |
Cours de Python Niveau MPSI/PCSI
4.5La fonction type La fonction type permet de retourner le type d’une variable Syntaxe : type(nom_de_lavariable) Exemples :
5. Les tests et les boucles : 5.1 Les tests : l’instruction if … else ….. ou if ….. elif…..else Syntaxe1: syntaxe2 : >>> if condition1: | ||||||||||
>>>if condition1: Action1 si condition vraie Action2 si condition vraie ……………… Else: Action1 si condition fausse Action1 si condition fausse …………………. |
# x est plus grand que y # x est plus petit que y # x est plus grand que, ou égal à y # x est plus petit que, ou égal à y Page 5 | |||||||||
Exemple :
Les opérateurs de comparaison : x == y # x est égal à y x != y # x est différent de y x > y x < y x >= y x <= y A.LAGRIOUI |
Cours de Python Niveau MPSI/PCSI | |||||||||||||||||||
while annee < 2020: annee = annee + 1 capital = capital * (1 + taux) print(annee, capital) | |||||||||||||||||||
La boucle For : d’une séquence : Syntaxes : | On est souvent amené à faire des boucles pour énumérer les éléments d’une liste ou | ||||||||||||||||||
For Variable in range(VI,VF,pas) : | For Variable in sequence : Instruction1 # exécution de l’instruction 1 Iinstruction2 # exécution de l’instruction 2 …………………… # exécution de l’instruction n | ||||||||||||||||||
Instruction1 # exécution de l’instruction 1 Iinstruction2 # exécution de l’instruction 2 ……………………….. # exécution de l’instruction n | |||||||||||||||||||
): Page 7 | |||||||||||||||||||
Si VI<VF : le pas est positif sinon le pas est négatif | |||||||||||||||||||
Exemples :
5.3Les instructions break et continue Il est possible de sortir d’une boucle avec l’instruction break. Cette instruction est très pratique pour tester une condition d’arrêt qui dépend d’une valeur entrée. Par exemple: A.LAGRIOUI | |||||||||||||||||||
Cours de Python Niveau MPSI/PCSI 6. Structures de base 6.1. Commentaires Comme dans la majorité des langages de script, les commentaires Python sont définis à l’aide du caractère #. Qu’il soit utilisé comme premier caractère ou non, le # introduit un commentaire jusqu’à la fin de la ligne. Comme toujours, les commentaires sont à utiliser abondamment avec parcimonie. Il ne faut pas hésiter à commenter le code, sans pour autant mettre des commentaires qui n’apportent rien. Le listing suivant présente une ligne de commentaire en Python. >>> # ceci est un commentaire >>> print('il s\'agit d\'un commentaire en python') #ceci est un commenataire il s'agit d'un commentaire en python Les commentaires introduits par # devraient être réservés au remarques sur le code en sa mise en œuvre. 6.2. Les listes 6.2.1. Définition Une liste est une structure de données de types différents 6.2.2. Création Pour créer une liste, on utilise des crochets :
Avec range : Pour créer des listes d'entiers en progression arithmétique, on peut utiliser la méthode range : | |||||||||||
>>> L1 = range(7) # Liste des entiers de 0 à 7 >>> L1 [0, 1, 2, 3, 4, 5, 6] >>>L2= range(2,7) # Liste des entiers de 2 à 6 (6=7-1) >>>L2 [2, 3, 4, 5, 6] >>>L3= range(2,17,2) # Liste des entiers de 2 à 16 avec un pas de 2 >>>L3 [2, 4, 6, 8, 10, 12, 14, 16] | |||||||||||
6.2.3.Elémentset indice : NB : On se souviendra que le premier élément d'une liste est l'élément d’indice 0. | |||||||||||
L3 | élément | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | ||
indice | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
-8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | ||||
6.2.4.Accèsaux éléments d’une liste : | |||||||||||
>>>L3[0] | |||||||||||
2 | |||||||||||
A.LAGRIOUI Page 9 |
Cours de Python Niveau MPSI/PCSI | |||||
>>>L[4] | |||||
10 >>>L[-5] 8 | |||||
On peut accéder à un élément avec sa position, et le modifier : | |||||
>>>L=[4,5,12.0,’a’,’abc’] >>>L [4,5,12.0,’a’,’abc’] >>>L[0] 4 >>> L[0] = 7 >>> L [7,5,12.0,’a’,’abc’] | Par contre si la liste est vide on peut pas lui affecter une valeur dans une position quelconque : Exemple : L1=[] L1[0)=12 ; # refusé par l’interpréteur On écrit : L1.append(12) | ent. | |||
, on peut procéder ainsi : n-1. L[-1] représente le dernier élém | |||||
6.2.5.Accèsau dernier élément de la liste : La fonction len renvoie la longueur d'une liste : >>> len(L) 6 Donc si on peut atteindre le dernier élément de L >>> n = len(L) >>> print L[n-1] 'abc' En se rappelant que, puisque l'on commence à 0, le dernier élément est Une autre méthode consiste à utiliser une particularité de la syntaxe python : >>> print L[-1] 'abc' Tranche d’une liste : On peut extraire facilement des éléments d'une liste :
6.2.6.Les méthodes d’une liste Count : Pour compter le nombre d'occurrences d'un élément dans une liste. | |||||
>>> M = [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> M.count(1) 3 | |||||
Extend : Soient M et L deux listes. M.extend(L) est équivalent à M = M + L (concaténation de deux listes). | |||||
>>> M = [1,2,3] >>> L = [4, 5, 6] >>> M.extend(L) >>> M [1, 2, 3, 4, 5, 6] Remarque: on peut écrire: M=M+L | |||||
A.LAGRIOUI Page 10 | |||||
Cours de Python Niveau MPSI/PCSI | |||||||
On peut trier par ordre décroissant : | |||||||
>>> L.sort(reverse = True) >>> L [18,13, 3, 3, 2, 2, 2, 1] | Page 12 | ||||||
6.3.Les chaines de caractères : 6.3.1 Définition Une chaine de caractères contenant un ensemble de caractères délimités par : Des guillemets simples : chaine1=’Bonjour’ #chaine sur une seule ligne Des guillemets simples : chaine1=’’Bonjour’’ #chaine sur une seule ligne Des guillemets simples : chaine1=’’’’’’Bonjour Tout le monde ‘’ ‘’ ‘’ #chaine sur plusieurs lignes 6.3.2 Accès aux caractères d’une chaine :
Caractère d'échappement Le symbole \ est spécial : il permet de transformer le caractère suivant : • \n est un saut de ligne • \t est une tabulation • \b est un « backspace » • \a est un « bip » • \' est un « ' », mais il ne ferme pas la chaine de caractères • \" est un « " », mais il ne ferme pas la chaine de caractères • \\ est un « \ » Si on veut que le symbole \ reste simplement un \ dans une chaîne, on peut utiliser une chaîne « brute » ("raw string") en préfixant le premier guillemets avec un r :
6.3.3 les méthodes d’une chaine de caractères Une méthode est une fonction qu’on peut appliquer sur chaine : Pour afficher les méthodes d’une chaine, il suffit d’écrire la chaine suivie d’un point. L’exemple suivant montre les méthodes de la chaine S3 définie ci haut. A.LAGRIOUI |
Cours de Python Niveau MPSI/PCSI | ||
Méthode | Page 13 | |
Split() : découpe une chaine en une liste de mots | S= ‘’Bonjour tout le monde ‘’ LS=S.split() donne LS=[‘Bonjour’,’tout’,’l’ , ‘monde’] | |
Join(liste de chaines) : concatène une liste de chaine en chaine unique | >>> S1="-" >>> S="Bonjour Tout Le Monde" >>> (S) >>> print(S3) B-o-n-j-o-u-r- -T-o-u-t- -L-e- -M-o-n-d-e >>> (['Bonjour','tout','le','monde']) >>> print(S4) Bonjour-tout-le-monde >>>S5= «’’ ‘’.join(['Bonjour','tout','le','monde']) >>>print(S5) Bonjour tout le monde | |
Find(sous chaine) : donne la position d’une sous chaine dans une chaine | >>> ('tout') >>> f donne -1 # la sous chaine n’existe pas >>> ('Tout') >>> print(f) donne 8 | |
Count(sous chaine) : donne le nombre le nombre d’apparition d’une sous chaine dans une chaine | >>> f=S.count('tout') >>> f donne 0 # la sous chaine n’existe pas >>> f=S.count('Tout') >>> print(f) donne 1 | |
Lower() : convertit une chaine en miniscule | >>> print(S) donne Bonjour Tout Le Monde >>> Sm=S.lower() >>> print(Sm) bonjour tout le monde | |
upper() : convertit une chaine en mijuscule | >>> Sm=S.upper() >>> print(Sm) bonjour tout le monde | |
capitalize() : convertit le 1ere lettre d’une chaine en mijuscule. | >>> SM=S.upper() >>> print(SM) donne BONJOUR TOUT LE MONDE | |
title() : convertit tous les 1er lettres des mots d’une chaine en mijuscule. | >>> t=S.title() >>> print(t) donne Bonjour Tout Le Monde | |
Swapcase() : intervertit les lettres majuscules et miniscules | >>> tt=t.swapcase() >>> print(tt) donne bONJOUR tOUT lE mONDE | |
Strip() : supprime les espaces blancs en début en en fin de la chaine | >>>ss=’’ bonjour tout le monde’’ >>>sss=ss.strip() donne ‘’bonjour tout le monde’’ | |
Replace() : remplace une sous chaine par une autre | >>> s1=S.replace('Tout Le Monde','la compagnie') >>> print(s1) donne Bonjour la compagnie | |
Index(sous chaine) : retourne la position de la sous chaine dans une chaine | >>> S="Bonjour" >>> S.index('j') 3 >>> S.index('njour') 2 | |
Center(nombre) : centrer la chaine sur nombre caractères | >>> print(S.center(40)) Bonjour 40 caractères | |
Format() : remplace un format dans une | >>> s1="Voici {0}chaîne à {1} trous." | |
A.LAGRIOUI |
Cours de Python Niveau MPSI/PCSI | ||||||
chaine | >>>print(s1) Voici {0}chaîne à {1} trous. >>> print(s1.format("une " , 2)) Voici une chaîne à 2 trous. >>> print("a{0}cada{0}".format("bra")) abracadabra | . Un liste est Page 14 | ||||
Les fonctions isupper() et islower() : Testent si une sous chaine est majuscule ou minuscule | >>> print(s1.isupper()) False >>> print(s1.islower()) False >>> print("BONJOUR".isupper()) True | |||||
7. Les Tableaux et les matrices Nous allons voir comment créer des tableaux avec la fonction array() de NumPy. Ces tableaux pourront être utilisés comme des vecteurs ou des matrices grâce à des fonctions de NumPy. Les fonctions (dot(), det(),inv(), eig(), ….etc.) permettent de réaliser des calculs matriciels utilisés en algèbre linéaire.
7.1 Les Tableaux à une ou plusieurs dimension : np.array() Pour créer des tableaux, nous allons utiliser la fonction array() de la bibliothèque numpy. 7.1.1 Tableaux monodimensionnels (1D) Pour créer un tableau 1D, il suffit de passer une liste de nombres en argument de array() constituée de nombres séparés par des virgules et entourés de crochets ([ ]).
Pour connaître le type du résultat de array(), on peut utiliser la fonction type().
On constate que ce type est issu du package numpy. Ce type est différent de celui d’une liste.
Tableaux bidimensionnels (2D) : Pour créer un tableau 2D, il faut transmettre à array() une liste de listes grâce à des crochets imbriqués.
A.LAGRIOUI |
Cours de Python Niveau MPSI/PCSI La fonctionsize():La fonction size() renvoie le nombre d’éléments du tableau.
La fonctionshape() La fonction shape() (forme, en anglais) renvoie la taille du tableau. | ||||
>>> T1 = array([2,5,6,8]) >>> shape(T1) (4,) >>> T2 = array([[1, 2, 3], [4, 5, 6]]) >>> shape(T2) (2, 3) | ||||
On distingue bien ici que T1 et T2 correspondent à des tableaux 1D et 2D, respectivement. | ||||
Produit terme à terme Il est possible de réaliser un produit terme à terme grâce à l’opérateur *. Il faut dans ce cas que les deux tableaux aient la même taille.
Produit matriciel -dot() Un tableau peut jouer le rôle d’une matrice si on lui applique une opération de calcul matriciel. Par exemple, la fonction dot() permet de réaliser le produit matriciel. | ||||
Cours de Python Niveau MPSI/PCSI Le produit d’une matrice de taille n x m par une matrice m x p donne une matrice n x p. Transposé : | |||||
>>> a.T array([[1, 4], [2, 5], [3, 6]]) | |||||
Complexe conjugué - conj() | |||||
cela, | >>> u = array([[ 2j, 4+3j], [2+5j, 5 ], [ 3, 6+2j]]) >>> conj(u) array([[ 0.-2.j, 4.-3.j], [ 2.-5.j, 5.+0.j], [ 3.+0.j, 6.-2.j]]) | une technique Page 16 | |||
Transposé complexe conjugué : >>>conj(u).T array([[ 0.-2.j, 2.-5.j, 3.+0.j], [ 4.-3.j, 5.+0.j, 6.-2.j]]) Tableaux et slicing Lors de la manipulation des tableaux, on a souvent besoin de récupérer une partie d’un tableau. Pour Python permet d’extraire des tranches d’un tableau grâce appelée slicing(tranchage, en français). Elle consiste à indiquer entre crochets des indices pour définir le début et la fin de la tranche et à les séparer par deux-points :. >>> a = array([12, 25, 34, 56, 87]) >>> a[1:3] array([25, 34]) Dans la tranche [n:m], l’élément d’indice n est inclus, mais pas celui d’indice m. Un moyen pour mémoriser ce mécanisme consiste à considérer que les limites de la tranche sont définies par les numéros des positions situées entre les éléments, comme dans le schéma ci-dessous : Il est aussi possible de ne pas mettre de début ou de fin. >>> a[1:] array([25, 34, 56, 87]) >>> a[:3] array([12, 25, 34]) A.LAGRIOUI | |||||
Cours de Python Niveau MPSI/PCSI | ||||
Matrice identité - eye() | ||||
eye(n) renvoie tableau 2D carré de taille n x n, avec des uns sur la diagonale et des zéros partout ailleurs.
Exercice Effectuer le produit suivant : [Math Processing Error] Produire un tableau de taille 7 x 8 ne contenant que des 3. Algèbre linéaire Déterminant - det()
Inverse - inv()
Valeurs propres et vecteurs propres - eig()
A.LAGRIOUI Page 18 |