UNIVERSITE CADI AYYAD MAT-S4/PHY-S4, Printemps 2025
Faculté des Sciences Semlalia Marrakech Analyse Numérique
Département de Mathématiques Travaux Pratiques
Rappels Langage Python
1 Introduction
• Python est un langage de programmation libre multi-usage : outils système, développement
web, multimedia, calcul scientifique . . . etc.
• Python et tout son environnement scientifique pour PC est diffusé dans une distribution
nommée Anaconda, téléchargeable à partir de l’adresse web
https://www.anaconda.com/download/success.
• Choisir en bas de la page la plate-forme (Windows, Linux ou MacOs).
• Il y a plusieurs environnements pour le développement en python. on emploie au choix les
interfaces spyder ou idle. Un programme en python est appelé script.
• Il existe plusieurs applications pour coder en python sur smartphones android. On conseille
par exemple ,d’installer pydroid.
2 Démarrage
• Pour spyder sous Linux on tape la commande spyder en console. Sous Windows, on lance
directement du menu spyder.
• Pour idle sous Linux on tape la commande idle en console.
Sous Windows, on lance du menu Anaconda Prompt, qui charge une console, puis taper idle.
On conseille idle pour les ordinateurs à faibles ressources :
Cette fenêtre est le shell appelée aussi console de python. Il suffit de taper une instruction puis
d’appuyer sur la touche « Entrée » de votre clavier pour lancer son exécution.
3 Nombres, expressions numériques et chaînes
Dans python tous les calculs sont numériques. Les nombres sont
• soit des entiers comme 3, -12, . . .
• soit en virgule flottante : 1.53, -4.0, 2.7e-6, . . . en double précision. Remarquer pour saisir
en notation scientifique 10−9 , on fait 1e-9 (ou 1E-9)
• Les opérateurs arithmétiques usuels sont :
Notation Opération
+,- addition, soustraction
*,/ multiplication, division décimale
** puissance : a**b (ab )
//,% division euclidienne, reste de division euclidienne
1
• Une chaine est du texte encadré par des guillemets (“) ou des apostrophes (’).
Exemples "python est un langage", '24'
• convertir un nombre en chaine et inversement :
– str() : convertit un nombre en chaine. Par exemple str(61) convertit en chaine '61'
– int() ou float() : convertit une chaine en nombre entier ou flottant. Par exemple
float("-4.125") convertit en nombre 4.125
[1]: print(6+3-1/2+3**4) #print pour afficher
89.5
• Les priorités des opérateurs sont comme suit : ** prioritaire sur *,\ (même priorité),
prioritaire sur +,- (même priorité).
• On observe que tout ce qui est saisi après le caractère # sur la même ligne est un commentaire.
[2]: print((6+(3-1))/2+3**4)
85.0
quelques opérations sur les chaines :
[3]: print("hello"+' '+"world") #cancatenation
print(4*"world") #dupliquer une chaine
hello world
worldworldworldworld
[4]: ch="je programme en python"
print(ch[3:7]) #extraire une partie de chaine
prog
3.1 Expressions logiques
• Un objet booléen a deux valaurs True (Vrai) et False (Faux).
• Toute expression de valeur numérique non nulle est considérée comme vraie.
• Expressions booleenes : sont formées par
Opération Notation
Comparaison de valeurs ==,!=,<,<=,>,>=
Logique and,or,not()
Identité is, is not
Appartenance in, not in
2
[5]: 1<=2 and -4>5 # faux
[5]: False
[6]: not(1>5) # vraie
[6]: True
[7]: 'h' in "blabla"
[7]: False
4 Variables
Toute variable doit être initialisée ou affectée.
[8]: print(a) # erreur!! a non définie
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In [8], line 1
----> 1 print(a) # erreur!! a non définie
NameError: name 'a' is not defined
[9]: a=3
b=a/2
print(a)
print(b)
3
1.5
5 Lire et Afficher
• Affichage simple
print(objet) # affiche objet
#Pour afficher plusiers objets séparés par des blancs:
print(objet1,objet2, ...)
[10]: x,y,=2,4.5 # affectation simultanée de variables
print(x,y)
z=x+y
print("La somme vaut : ",z)
3
2 4.5
La somme vaut : 6.5
• Affichage formaté
La fonction print accepte l’affchage de chaines formatées selon ce qu’on appele les f-string :
mélange de texte et de données formatées sous la forme :
f" ... texte {v1:code1} ...texte ... {v2:code2}..." (attention au f en-tête de la
chaine) où les données à formater sont codées sous forme {v:code }, v est une donnée ou
expression et code est le spécificateur de format qui formate la donnée v selon un formatage
désiré.
Remarque. si on ne met dans la chaine que le nom de la donnée sans le spécificateur code, le
formatage par défaut est affiché.
[11]: x=1/4-15/7
print(f"valeur de x= {x}") #decimal libre
print(f"valeur de x = {x:.4f}") #decimal 4 chiffres apres la virgule
print(f"valeur de x = {x:.5e}") #decimal notation scientifique
y=2**5.25
print(f"x= {x:.4f}, y= {y:.3E}")
valeur de x= -1.8928571428571428
valeur de x = -1.8929
valeur de x = -1.89286e+00
x= -1.8929, y= 3.805E+01
remarque. Par défaut, après exécution de print on passe à la ligne suivante. Comme dans langage
C, print supporte les caractères spéciaux : \n,\t, . . . aussi.
[12]: a,b,c=-1,0.5,"toto"
print(f"x= {a},\ty= {b:.5E}\n{c}")
x= -1, y= 5.00000E-01
toto
• Lecture du clavier : input(" ... ")
[13]: n=input("donner un nombre entier : ")
"""
affiche le message et affecte une chaine
saisie au clavier à la variable n
en tant que chaine
"""
print(n+3) # produit une erreur!
donner un nombre entier : 4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [13], line 7
4
1 n=input("donner un nombre entier : ")
2 """
3 affiche le message et affecte une chaine
4 saisie au clavier à la variable n
5 en tant que chaine
6 """
----> 7 print(n+3) # produit une erreur!
TypeError: can only concatenate str (not "int") to str
Remarques : un texte encadré par triple guillemets est un commentaire en plusieurs lignes
Ce qu’on introduit au clavier après l’exécution de input(" ... ") est toujours une chaine.
Si on veut saisir et stocker en nombre, il faut convertir le résultat de la fonction input() à un type
numérique à l’aide des fonctions int() ou float().
[14]: #par exemple :
n=int(input("donner un nombre entier : "))
print(n+3)
donner un nombre entier : 4
7
Plus généralement eval(input(" ... ")) si on veut lire à partir du clavier plusieurs données en
une seule ligne ou même des objets plus composés comme les listes (voir plus loin) :
[15]: x,y=eval(input("saisir respectivement 2 nombres : "))
print(x)
print(y)
# on introduit 2 nombres au clavier séparés par une virgule affectés
# dans l'ordre à x et y
saisir respectivement 2 nombres : -4,7
-4
7
6 Listes
une liste est une collection d’objets dont la syntaxe est : [objet1,objet2, ...]
[16]: L=[3,-1,'bonjour',6]
• On accède à chaque élément par sa position.
• Les positions commencent toujours par 0
• La fonction len donne la taille de la liste
[17]: print(L[0])
print(L[2])
print(len(L)) # taille
5
3
bonjour
4
Quelques méthodes opérant sur les listes :
[18]: X=[3,5]
X.append(-8) # ajouter un élément
print(X)
[3, 5, -8]
[19]: X1=[5,'hello']
print(X+X1) #fusionner
[3, 5, -8, 5, 'hello']
[20]: ls=3*X1 #duplique une liste
print(ls)
[5, 'hello', 5, 'hello', 5, 'hello']
[21]: ls.count(5)
[21]: 3
[22]: ls2=[2,4,'f',12,-5,3,-4]
print(ls2[2:5]) #extraire une partie de la liste
['f', 12, -5]
Nous travaillons à partir de maintenant dans la fenêtre d’édition. Pour editer des
programmes python appelés scripts, on fait File->New File (ou Ctrl N). Une seconde fenêtre
s’ouvre dans la quelle on rédige du code. Les actions suivantes sont utiles :
• Pour effectuer des actions dans la fenêtre d’édition :
– Ouvrir un programme existant : File->Open Module (ou Ctrl M)
– Enregistrer un programme : File-> Save (ou Ctrl S) : doit avoir l’extension .py
– Executer un programme : menu Run -> Run Module (ou F5). Les résultats sont affichés
dans le shell.
6
Créer un programme TP0.py contenant les manipulations qui suivent.
7 Instructions de Contrôle
Une instruction de contrôle est formée par une en-tête et un bloc.
Chaque bloc a un niveau de profondeur ou indentation.
en-tete: #attention aux 2 points au bout
instruction 1
instruction 2
...
... #instructions indentees
# Fin bloc
autres_instructions
hors bloc alignes avec en-tete
7.1 Instructions alternatives
Les instructions alternatives ou branchements sont gérées par les mots if, else, elif
if condition_1:
bloc_1
elif condition_2:
bloc_2
elif condition_3
bloc_3
...
# ainsi de suite
else:
bloc
[23]: #Exemple :
x,y=eval(input("donner 2 nombres : "))
if x-y>0:
print("x est plus grand que y") # indentation
elif x==y: # aligne avec if
print(" x et y sont egaux")
else:
print("x est plus petit que y")
donner 2 nombres : -3,10
x est plus petit que y
7.2 Boucles
Python possède 2 types de boucles :
7
7.2.1 Boucle for : boucle bornée
La boucle for est adaptée pour parcourir n’importe quelle séquence (par ex. une liste ou une chaîne),
dans l’ordre où ils apparaissent dans la séquence.
for objet in sequence:
instruction 1
instruction 2
...
[24]: for x in [5,2.5,-7,[-1,3]]:
print(x)
5
2.5
-7
[-1, 3]
La fonction range : très utile pour les boucles for.
• range(debut,fin,pas) construit une séquence d’entiers entre debut et fin avec un avance-
ment pas. * la borne fin toujours exclue.
• pas peut être negatif.
[25]: for i in range(1,15,2):
print('i= ',i,'=> son carre = ',i**2)
i= 1 => son carre = 1
i= 3 => son carre = 9
i= 5 => son carre = 25
i= 7 => son carre = 49
i= 9 => son carre = 81
i= 11 => son carre = 121
i= 13 => son carre = 169
[26]: for j in range(10,1,-1):
print('j= ',j,'=> son inverse = ',1/j)
j= 10 => son inverse = 0.1
j= 9 => son inverse = 0.1111111111111111
j= 8 => son inverse = 0.125
j= 7 => son inverse = 0.14285714285714285
j= 6 => son inverse = 0.16666666666666666
j= 5 => son inverse = 0.2
j= 4 => son inverse = 0.25
j= 3 => son inverse = 0.3333333333333333
j= 2 => son inverse = 0.5
8
7.2.2 Boucle while : boucle non bornée
La boucle while est une itération plus générale. Elle exécute un bloc tant que la condition de test
est réalisée.
while condition:
instruction 1
instruction 2
...
[27]: a=10
while a>0.1:
a=a/5
print(a)
2.0
0.4
0.08
instructions break et continue
[28]: for i in range(0,10,1):
if i==6:
break # interrompre la boucle
x=i+1
print(x)
1
2
3
4
5
6
[29]: i=0
while i<9:
i=i+1
if i==3:
continue
print(i)
1
2
4
5
6
7
8
9
9
7.3 Fonctions
• On peut définir de nouvelles fonctions à l’aide du modèle :
def nomFonction(arg1,arg2,...):
instruction1
instruction2
...
return(res1,res2,...) # return non obligatoire,
#obligatoire si la fonction renvoie des résultats.
# fin bloc
où arg1,arg2,. . . sont les arguments d’entrée de la fonction et res1,res2,. . . sont les résultats.
• On appelle une fonction par nomFonction(param1,param2,...), où param1,param2,... sont
les paramètres effectifs dans l’ordre de définition des arguments.
• Une fonction peut ne pas avoir d’argument, ou admettre tout type d’arguments : nombres,
chaines, listes, fonctions, . . .
• Elle peut retourner un résultat, plusieurs résultats, ou ne pas retourner de résultat,
• Elle peut retourner tout type de résultat.
[30]: def som(a,b):
s=a+b
return(s)
[31]: #appel de fonction
print("somme = ",som(7,3))
a,b=-0.5,3.25
c=som(a,b)
print("somme = ",c)
somme = 10
somme = 2.75
• Fonction à plusieurs résultats :
[32]: def somDiff(a,b):
s=a+b
d=a-b
return(s,d)
[33]: #appel
print(somDiff(3,5))
#ou bien
x,y=somDiff(3,5) #affecter resultats a deux variables
print("x= ",x,",y= ",y)
10
(8, -2)
x= 8 ,y= -2
• fonction en argument :
[34]: def MyFunc(x,fonc):
y=-1+fonc(x)
return(y)
[35]: def g(u):
return(u**3)
x=2
z=MyFunc(x,g)
print("resultat de MyFunc = ",z)
def h(t):
return(1/t)
print("Autre resultat de MyFunc = ",MyFunc(4,h))
resultat de MyFunc = 7
Autre resultat de MyFunc = -0.75
Fonctions mathématiques usuelles:
Pour pouvoir utiliser les mathématiques, il faut importer d’abord dans le script la bibliothèque
standard des mathématiques à l’aide de la ligne de code : from math import *.
La notation python de quelques constantes et fonctions mathématiques usuelles sont dans la table
qui suit :
pi constante π
e constante exp(1)
abs valeur absolue
exp exponentielle
log (log10) logarithme népérien (en base 10)
cos,sin,tan fonctions trigonométriques
acos,asin,atan fonctions trigonométriques inverses
cosh,sinh,tanh fonctions hyperboliques
acosh,asinh,atanh fonctions hyperboliques inverses
sqrt racine carrée
floor partie entière
[36]: from math import *
x=cos(pi)
print(x)
-1.0
11
8 Eléments de traçage graphique
Pour pouvoir tracer des objets scientifiques, les courbes mathématiques par exemple, il faut d’abord
charger une bibliothèque par la ligne de code :
from matplotlib.pyplot import * et utiliser les différentes fonctions qui produisent le dessin
scientifique.
Nous allons utiliser principalement la fonction plot pour tracer des courbes.
Le principe est de former deux listes X et Y de même taille : X va jouer le rôle des abscisses et
Y le rôle des ordonnées des points de la courbe. La fonction plot est évoquée sous la forme :
plot(X,Y, ... options ...).
Par exemple : pour tracer la courbe de la fonction cos sur I = [a, b], on construit la liste X constituée
de n+1 nombres x0 , x1 , · · · , xn equidistants dans I xk+1 −xk = h = (b−a)/n, h est un pas constant.
Soit xk = a + kh, k = 0, 1, · · · , n. On construit la liste Y constitituée des images des cos(xk ) et
utiliser plot.
Voici le code pour produire la courbe sur [−2π, 2π] :
[37]: from matplotlib.pyplot import *
[38]: # courbe cosinus sur [-2*pi,2*pi]
from math import *
n=400
h=4*pi/n
# former listes X et Y
X=[] # initialiser listes vides
Y=[]
for k in range(0,n+1): # pas 1 par default
xk=-2*pi+h*k
X.append(xk)
Y.append(cos(xk))
plot(X,Y) # tracer X en abscisses, Y en ordonnées
[38]: [<matplotlib.lines.Line2D at 0x7f5fa724e150>]
12
On peut superposer plusieurs courbes dans le même cadre :
[39]: n=400
h=4*pi/n
X=[]
Y=[]
Z=[]
for k in range(0,n+1):
xk=-2*pi+h*k
X.append(xk)
Y.append(cos(xk))
Z.append(sin(xk))
plot(X,Y,X,Z)
[39]: [<matplotlib.lines.Line2D at 0x7f5fa708c3d0>,
<matplotlib.lines.Line2D at 0x7f5fa709f650>]
13
avec des styles différents, une légende des labels pour les axes et un titre :
[40]: n=400
h=4*pi/n
X=[]
Y=[]
Z=[]
for k in range(0,n+1):
xk=-2*pi+h*k
X.append(xk)
Y.append(cos(xk))
Z.append(sin(xk))
plot(X,Y,'r--',X,Z,'g*')
title("Courbes") #un titre
xlabel("abscisses") # label pour les x
ylabel("ordonnees") # label pour les y
legend(["cos","sin"])
[40]: <matplotlib.legend.Legend at 0x7f6021688110>
14
15