0.resume de Python - Sup
0.resume de Python - Sup
0.resume de Python - Sup
Langage Python
1. Introduction
Python, comme la majorité des langages dit de script, peut être utilisé aussi bien en modeinteractif qu’en
mode script / programme.Dans le premier cas, il y a un dialogue entre l’utilisateur et l’interprète : les
commandes entréespar 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 dans les fichiers l’extension .py
A.LAGRIOUI Page1/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Une variable est une zone mémoire dans laquelle on stocke une valeur; cette variable est définie par un nom.
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.
and Assert break class continue def del elif else except
exec Finally for from global if import in is lambda
not Or pass print raise return try while yield
5.3 Type de variable
Le type d’une variable correspond à la nature de celle-ci.
Les 5 types principaux dont nous aurons besoin sont :lesentiers (int) ,lesflottants(float), les chaines de
caractères(str) , les booléens(bool)etlescomplexes(omplex).
5.4 Dé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.
>>> a=10 # 10 est une valeur entière
>>> a
10
A.LAGRIOUI Page2/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Dans cet exemple, nous avons stocké un entier dans la variable a, mais il est tout a fait possible de stocker des
réels ,des chaines de caractères, des complexes ou même de booléens :
Syntaxe1: syntaxe2 :
>>>if condition1:
>>>if condition1: Action1 si condition1 vraie
Action1 si condition vraie Action2 si condition1 vraie
Action2 si condition vraie ………………...
………………... elif condition2: # si condition1 fausse
else: Action1 si condition2vraie
Action1 si condition fausse Action2 si condition2 vraie
Action2 si condition fausse ………………….
…………………. else :
Action1 si condition2 fausse
Exemple : >>> a =10 Action2 si condition2 fausse
>>>if a >0 : ………………….
... print("a est positif")
... elif a <0 :
... print("a est négatif")
... else:
... print("a est nul")
...
A.LAGRIOUI Page3/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Exercices :
Exercice2 : Ecrire un programme qui lit trois variables et retourne leur max.
La boucle while :
L’instruction while (“tant que”, en français) permet d’exécuter une boucle tant qu’une condition est vraie.
WhileVariable différente d’une valeur finale (VF) : # tant que la condition est vraie
taux=0.03
capital=1000.0
annee=2022
whileannee<2030:
annee=annee+1
capital=capital* (1+taux)
print(annee, capital)
La boucle For : On est souvent amené à faire des boucles pour énumérer les éléments d’une liste ou d’une
séquence itérable:
Syntaxes : for Variable in sequence :
for Variable in range(VI,VF,pas) :
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:
somme=0
whileTrue:
n=int(input("Entrez un nombre (0 pour arrêter): "))
ifn==0:
break
somme=somme+n
print("La somme des nombres est",somme)
Ce qui donne à l’écran :
Une fonction est un sous programme qui réalise une certaine tâche.
Une fonction est composée de trois grandes parties :
Son nom qui permet d'y faire appel et l’identifier des autres fonctions.
Ses arguments qui permettent de spécifier des données à lui transmettre.
Sa sortie, c'est-à-dire ce qu'elle retourne comme résultat.
A.LAGRIOUI Page5/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Son nom et ses arguments forment ce que l'on appelle la signature d'une fonction. Deux fonctions seront
différenciées par l'interpréteur à partir du moment où elles ne possèdent pas la même signature.
Dans la pratique, les fonctions et les procédures s'appellent exactement de la même manière ! La seule
différence réside effectivement dans le fait que les procédures ne renvoient pas de résultats et ne servent
donc qu'à effectuer une suite d'instructions. Ensuite, nous avons vu que pour faire appel à une fonction, il
faut écrire quelque chose du genre :
Les fonctions avec des arguments ayant des valeurs par défaut
Arguments anonymes :
La syntaxe est particulièrement simple. En fait, on va préciser une séquence (liste, tuple ou chaîne de caractères)
comme argument. Le fait que cet argument doive être une séquence se précise par l'utilisation de l'opérateur '*'
juste avant le nom de l'argument :
A.LAGRIOUI Page6/26
CPGE-MP-PSI Programmation Python Résumé de SUP
3ème Appel :
Si on veut associer une clé à chacun des arguments qu’on donne en supplément à une fonction, il va falloir
utiliser un dictionnaire (voir paragraphe 8.5 page ……….). Et ceci, c'est l'opérateur '**' qui sera utilisé.
1er Appel
2ème Appel
Une autre façon d’appeler la fonction : remarquez la présence du double étoiles ** et le mot dict.
A.LAGRIOUI Page7/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Documenter une fonction : Une dernière chose très importante est la documentation de la fonction. On va
commencer à documenter notre code pour le rendre plus compréhensible et exploitable par d'autres personnes.
Pour cela, c'est très simple, il suffit de placer immédiatement sous la ligne de définition de notre fonction, une
chaîne de caractères entre triple 'quote' (""" chaine""") qui sera considérée comme un commentaire.
Appel :
Une fonction peut appeler une autre fonction. Un c as particulier elle peut appeler elle-même.
= ∗ +
La conception d'une fonction récursive n'est pas éloignée du principe de démonstration par récurrence :
Leprincipededémonstration par récurrence est le suivant:
1- On démontre d'une part que la suite satisfait une telle propriété (croissante,
décroissante,....) pour le cas de base
2- D'autre part, on suppose que cette propriété est valide pour et on démontre que cela
implique que la suite satisfait aussi cette propriété pour tout n > 0.
A.LAGRIOUI Page8/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Définition d'algorithme récursif
Fonction récursive :
Une fonction est dite récursive si elle s'appelle elle-même au cours de son exécution.
Avantages de la récursivité :
Le code en Python
Méthode itérative Méthode récursive
def fact_Iter(n): def fact_Rec(n):
f=1 ifn==0:
foriinrange(2,n+1): return1
f=f*i else:
return f returnn* fact_Rec(n-1)
La récursivité multiple
Définition:
Une récursivité est multiple s’il ya plusieurs appels récursifs à une fonction P dans le corps d'une
fonction récursive P.
0 si n=0
Exemple1:suitedeFibonacci Fn 1 si n =1
F +F
n1 n 2 si n 2
Questions:
1. Ecrirelecodedelafonction récursiveFibo_Re quiretournelavaleurde .
2. Donnerlatrace d'exécutionpourcalculer
A.LAGRIOUI Page9/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Exemple2:Calculdecombinaison
0 si p=0
p
C 1
n si n =p
C p +C p 1 sinon
n 1 n 1
Questions:
1. Ecrirelecodedecettefonction récursive.
2. Donnerlatrace d'exécutionpourcalculer
La récursivité imbriquée
Définition:
Une récursivité estdite imbriquéesiunefonction récursive P contientunappel imbriqué.
Exemple:Lafonctiond'ACKERMANN
p 1 si n=0
Ack (n, p) Ack(n-1,1) si n >0 et p=0
Ack n-1, Ack n, p-1 sinon
Questions:
1. CalculeralamainAck(1,0); Ack(2,0) et Ack(3,0):
2. Ecrirelecodedecettefonction récursive.
3. Donnerlatraced'exécutionpourcalculer Ack(3 , 2)
Larécursivitémutuelle
Définition :
Une récursivité estmutuelleoucroiséequandunefonction P appelleuneautrefonction Q qui
déclencheunappel récursif à P
Remarque:
Lasituationestobligatoirementsymétrique,puisque Q déclencheraunappelde P,quidéclencherait à
sontourunappelde Q.
Exemple:Laparité d'unentiernatureln
True si n=0 False si n=0
pair (n) et impair (n)
impair (n 1) sinon pair (n 1) sinon
Questions:
1. Ecrirelecodedelafonction récursivepair(n);
2. Ecrirelecodedelafonction récursiveimpair(n);
3. Donnerlatrace d'exécutionpourcalculer pair (6)
4. Donnerlatrace d'exécutionpourcalculer impair (8)
8. Structures de base
8.1. Les listes
8.1.1. Définition
Une liste est une structure de données de types différents
A.LAGRIOUI Page10/26
CPGE-MP-PSI Programmation Python Résumé de SUP
8.1.2. Création
>>>L4[0]>>> L3[-len(L4)]>>>L[-5]
1 2 3
On peut accéder à un élément avec sa position, et le modifier :
Tranche d’une liste : On peut extraire facilement des éléments d'une liste :
A.LAGRIOUI Page11/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Exemple :
>>> L=[i for i in range(10) ]donne L=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> L1=[ 2*x**2-3*x+2 for x in range(10)]donne L1=[2, 1, 4, 11, 22, 37, 56, 79, 106, 137]
>>> L=[[1,2,3,4,5],[11,22,33,44,55],[10,20,30,40,50]]
>>> L
[[1, 2, 3, 4, 5], [11, 22, 33, 44, 55], [10, 20, 30, 40, 50]]
>>>L[0][0]
1
>>>L[0][3]
4
>>>L[2][3]
40
>>>L[2][:]
[10, 20, 30, 40, 50]
>>>L[:][1]
[11, 22, 33, 44, 55]
>>>L[:][0]
[1, 2, 3, 4, 5]
Les liste de compréhension à plusieurs dimensions :
A.LAGRIOUI Page12/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Déclaration :
Les méthodes d’un ensemble :
Python propose un type de données appelé tuple, qui est assez semblable à une liste mais qui n'est
pas modifiable. Du point de vue de la syntaxe, un tuple est une collection d'éléments séparés par des
virgules :>>> T=(4,12,8,25)
>>> T
(4, 12, 8, 25)
>>> type(T)
<class 'tuple'>
Les méthodes d’un tuple :
A.LAGRIOUI Page13/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Traceback (most recent call last):
File "<pyshell#178>", line 1, in <module>
T[0]=20
TypeError: 'tuple' object does not support item assignment
8.4. Les dictionnaires
8.4.1. Définition
Après avoir étudié les séquences avec les listes, les ensembles, les tuples et les chaînes, nous allons nous
intéresser à un autre type de données : les types associatifs. En Python, il n'existe qu'un seul type associatif
appelé dictionnaire.
8.4.2. Déclaration
Syntaxe générale :
A.LAGRIOUI Page14/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Values : retourner la liste des valeurs d’un dictionnaire
Pop : supprimer et retourner une valeur d’un dictionnaire en précisant son clé.
Exercice:
1. Ecrire un programme qui lit une chaine de caractère et construit un dictionnaire contenant en clé les
caractères de la chaine et en valeur leur fréquence d’apparition dans la chaine
2. Ecrire un programme qui lit un dictionnaire et qui inverse leurs clés avec leurs valeurs. C.à.d dans le
nouveau dictionnaire les clés seront les valeurs de l’ancien dictionnaire et les valeurs seront les clés de
l’ancien.
8.5. Les chaines de caractères :
8.5.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
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 guillemet avec un r :
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.
Méthode
Split() : découpe une chaine en une liste S= ‘’Bonjour tout le monde ‘’
de mots LS=S.split() donne LS=[‘Bonjour’,’tout’,’l’ , ‘monde’]
Join(liste de chaines) : concatène une >>> S1="-"
liste de chaine en chaine unique >>> S="Bonjour Tout Le Monde"
>>> S3=S1.join(S)
>>> print(S3) B-o-n-j-o-u-r- -T-o-u-t- -L-e- -M-o-n-d-e
>>> S4=S1.join(['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 >>> f=S.find('tout')
d’une sous chaine dans une chaine >>> f donne -1 # la sous chaine n’existe pas
>>> f=S.find('Tout')>>>print(f) donne 8
Count(sous chaine) : donne le nombre le >>> f=S.count('tout')
nombre d’apparition d’une sous chaine >>> f donne 0 # la sous chaine n’existe pas
dans une chaine >>> f=S.count('Tout') >>>print(f) donne 1
Lower() : convertit une chaine en >>>print(S) donne Bonjour Tout Le Monde
miniscule >>>Sm=S.lower()
>>>print(Sm) bonjour tout le monde
upper() : convertit une chaine en >>>Sm=S.upper()
mijuscule >>>print(Sm) bonjour tout le monde
capitalize() : convertit le 1ere lettre d’une >>> SM=S.upper()
A.LAGRIOUI Page16/26
CPGE-MP-PSI Programmation Python Résumé de SUP
chaine en mijuscule. >>>print(SM) donne BONJOUR TOUT LE MONDE
title() : convertit tous les 1er lettres des >>> t=S.title()
mots d’une chaine en mijuscule. >>>print(t) donne Bonjour Tout Le Monde
Swapcase() : intervertit les lettres >>> tt=t.swapcase()
majuscules et miniscules >>>print(tt) donne bONJOURtOUTlEmONDE
Strip() : supprime les espaces blancs en >>>ss=’’ bonjour tout le monde’’
début en en fin de la chaine >>>sss=ss.strip() donne ‘’bonjour tout le monde’’
Replace() : remplace une sous chaine par >>> s1=S.replace('Tout Le Monde','la compagnie')
une autre >>>print(s1) donne Bonjour la compagnie
Index(sous chaine) : retourne la position >>> S="Bonjour"
de la sous chaine dans une chaine >>>S.index('j')
3
>>>S.index('njour')
2
Center(nombre) : centrer la chaine sur >>>print(S.center(40))
nombre caractères Bonjour
40 caractères
Format() : remplace un format dans une >>> s1="Voici {0}chaîne à {1} trous."
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
Les fonctions isupper() et islower() : >>> print(s1.isupper())
Testent si une sous chaine est majuscule False
ou minuscule >>> print(s1.islower())
False
>>> print("BONJOUR".isupper())
True
A.LAGRIOUI Page17/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Pour connaître le type du résultat de array(), on peut utiliser la fonction type().
>>>type(a)
<type 'numpy.ndarray'>
On constate que ce type est issu du package numpy. Ce type est différent de celui d’une liste.
>>>type([4,7,9])
<type 'list'>
>>>T=array([[1,2,3],[4,5,6]])
>>>T
array([[1, 2, 3],
[4, 5, 6]])
La fonction shape()
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.
A.LAGRIOUI Page18/26
CPGE-MP-PSI Programmation Python Résumé de SUP
>>>T1*T2
array([[ 2, 2, 9],
[12, 10, 6]])
Comme tout objet structure en python un tableau quelque soit en une seule ou plusieurs dimensions
On peut également supprimer plusieurs colonnes (ou lignes) à la fois. Voici quelques exemples :
A.LAGRIOUI Page19/26
CPGE-MP-PSI Programmation Python Résumé de SUP
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.
>>>T1=array([[1,2,3],
[4, 5, 6]])
>>>T2=array([[4],
[2],
[1]])
>>>dot(T1,T2)
array([[11],
[32]])
Le produit d’une matrice de taille n x m par une matrice m x p donne une matrice n x p.
Algèbre linéaire
Déterminant - det()
>>> a = array([[1, 2],
[3, 4]])
>>>np.linalg.det(a)
-2.0
Inverse - inv()
>>>a = array([[1, 3, 3],
[1, 4, 3],
[1, 3, 4]])
>>>np.linalg.inv(a)
array([[ 7., -3., -3.],
[-1., 1., 0.],
[-1., 0., 1.]])
Les colonnes de V sont les vecteurs propres de A associés aux valeurs propres qui apparaissent dans D.
A.LAGRIOUI Page20/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Exercice : Vérifier que les colonnes de V sont bien des vecteurs propres de A
Changement de la taille d’un tableau
Il est possible de changer la taille d’un tableau en utilisant l’attribut shape de ce tableau.
>>>u = arange(1,16)
>>>u
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
>>>shape(u)
(15,)
>>>u.shape = (3,5)
>>>u
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
>>>shape(u)
(3, 5)
Attention si on écrit :
u1=u.reshape(3,5) on aura
>>>u1
array([[ 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
Alors que le tableau u reste inchangé :
>>>u
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
Les options sont très nombreuses et nous n'en présenterons que quelques unes, les plus utiles.
Pour plus de détail, voir http://matplotlib.org/
Pour utiliser matplotlib, la façon la plus simple est d'importer le module pylab. De façon
simplifiée, ce module import à la fois matplotlibet numpy.
In [2]:frompylabimport*
Mais on peut seulement importer le module matplotlib.pyplot, traditionnelement sous le
nom plt (la façon la plus propre):
In [3]:importmatplotlib.pyplotasplt
Un graphique simple :
D’une manière générale les fonctions plt.plotattendent des vecteur/matrice, bref des
tableaux de points du plan. Selon les options, ces points du plan sont reliés entre eux de façon
ordonnée par des segments : le résultat est une courbe.
A.LAGRIOUI Page21/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Commençons par la fonction sinus.
importmatplotlib.pyplotasplt
importnumpyasnp
x=np.linspace(-5,5,100)
plt.plot(x,np.sin(x)) # on utilise la fonction sinus de Numpy
plt.ylabel('fonction sinus')
plt.xlabel("axe des abcisses")
plt.show()
Plusieurs courbes :
On peut bien sûr tracer plusieurs courbes sur un même graphique.
In [5]:
importmatplotlib.pyplotasplt
importnumpyasnp
x=np.linspace(0, 2*pi, 30)
y1 =np.cos(x)
y2 =np.sin(x)
plt.plot(x, y1,label=’cos’)
plt.plot(x, y2,label=’sin’)
plt.legend(loc='upper center')
On peut, pour chacune des courbes, préciser la couleur et lui affecter une légende.
plt.plot(x, y1, color='red', label ='cos')
A.LAGRIOUI Page22/26
CPGE-MP-PSI Programmation Python Résumé de SUP
plt.plot(x, y2, color='blue', label ='sin')
Matplotlib est fournie avec un jeu de paramètres par défaut qui permet de personnaliser toute
sorte de propriétés. Vous pouvez contrôler les réglages par défaut de (presque) toutes les
propriétés : taille du graphique, résolution en points par pouce (dpi), épaisseur du trait,
couleurs, styles, vues, repères, grilles, textes, polices de caractères, etc.
A.LAGRIOUI Page23/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Subplots
Un système de sous-figures permet de juxtaposer différents graphiques.
deff(t):
returnnp.exp(-t) *np.cos(2*np.pi*t)
A.LAGRIOUI Page24/26
CPGE-MP-PSI Programmation Python Résumé de SUP
Plusieurs graphiques
On peut tracer plusieurs graphiques sur des fenêtres séparées.
importnumpyasnp plt.figure(2) )
importmatplotlib.pyplotasplt plt plt.plot(t, U(t,10),), label
label="$Q=10$")
t=np.linspace(0,10,400) ) plt.xlim(0, 10) )
defU(t,Q): plt.xlabel("$t \,(s)$"
,(s)$", fontsize=16)
returnnp.exp(-2/Q*t)*cos(2* 2*pi*t) plt.ylim(-1, 1) )
plt.figure(1) ) plt.ylabel("$U \,(V)$"
,(V)$", fontsize=16)
plt.plot(t, U(t,2), label="$Q=2$" "$Q=2$") plt.legend()
legend()
plt.title("Figure 1") ) plt.show()
A.LAGRIOUI Page25/26
CPGE-MP-PSI Programmation Python Résumé de SUP
3.Tracer en 3D en python
importmatplotlib.pyplotasplt
importnumpyasnp
from mpl_toolkits.mplot3d import axes3d # Fonction pour la 3D
# Tableau pour les 3 axes
# Création d'un tableau de 100 points
#entre -4*pi et 4*pi
theta = np.linspace(-4*np.pi, 4*np.pi, 100)
z=np.linspace(-2, 2, 100)
r= z**2 + 1
x = r * np.sin(theta) # Création du tableau
de l'axe x
y = r * np.cos(theta) # Création du tableau
de l'axe y
# Tracé du résultat en 3D
fig = plt.figure()
ax =fig.gca(projection='3d')#Affichage en 3D
ax.plot(x, y, z, 'r',label='Courbe') # Tracé de la courbe 3D
plt.title("Courbe 3D")
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.tight_layout()
plt.show()
A.LAGRIOUI Page26/26