Cours Introduction au Python
2023/2024
Présenté par AMAL TARIFA
Plan
• Introduction Générale (python),
• Notions basiques: Types de variables , les boucles, les fonctions,
• Les décorateurs ,
• POO ,
• Les exceptions,
• Les tests unitaires,
• Les expressions régulières.
Presented By PhD Amal TRIFA
Introduction
générale
Presented By PhD Amal TRIFA
Introduction générale
Il a été créé par Guido van Rossum en 1991 et développé par la “Python Software
Foundation”. Il a été conçu en mettant l'accent sur la lisibilité du code et sa syntaxe
permet aux programmeurs d'exprimer leurs concepts en moins de lignes de
[Link] est un langage de programmation qui vous permet de travailler
rapidement et d'intégrer des systèmes plus efficacement.
Deux versions principalement:
• Python 2
• Python 3
Presented By PhD Amal TRIFA
Introduction générale
Particularités:
1. Libre et open source
2. Orienté objets
3. Mode Interactif
4. De haut niveau
5. Des librairies standards
6. Scalable (évolutif)
7. Extensible
8. Portable
Presented By PhD Amal TRIFA
Introduction générale
Particularités:
1. ‘Garbage Collector’ automatique
2. Programmation GUI (interfaces) [ PyQt5, PyQt4, wxPython, Tk in
Python]
3. Intégré
4. Interprété
Presented By PhD Amal TRIFA
Introduction générale
Particularités:
Rappel: Interprété??
l'interpréteur va exécuter les lignes du code une par
une.
(+) Dans un langage interprété, le même code
source fonctionne directement sur tout ordinateur.
Avec un langage compilé, on doit tout recompiler à
chaque fois ce qui pose parfois des soucis.
Exemple: PhP, Javascript, python, Java
Presented By PhD Amal TRIFA
Introduction générale
Particularités:
Rappel: Compilé??
(+)Dans un langage compilé, le
programme est directement exécuté sur
l'ordinateur, donc il sera en général plus
rapide que le même programme dans un
langage interprété.
exemple: C, C++, C#
Presented By PhD Amal TRIFA
Introduction générale
Particularités: Interprété et
portabilité Si pas d’erreurs
Code machine
La portabilité !!
Presented By PhD Amal TRIFA
Introduction générale
Particularités:
Tout est objet en python!!!
x=1
NB: x n’est pas une simple valeur mais un pointeur vers un objet (Pyobject)!!!
Un entier en C est essentiellement une étiquette pour une position en mémoire dont les octets codent une
valeur entière.
Un entier Python est un pointeur vers une position en mémoire contenant toutes les informations de l'objet
Python, y compris les octets qui contiennent la valeur entière.
Presented By PhD Amal TRIFA
Introduction générale
Particularités:
Une large communauté
Presented By PhD Amal TRIFA
Introduction générale
Pour pouvoir exécuter du python , il faut avoir un interpréteur et un IDE:
• Eclipse with PyDev Plugin
• Python Tools for Visual Studio (for Windows users)
• PyCharm
• Spyder
• Komodo IDE
Anaconda: est un outil en distribution libre et open source destiné à la programmation Python et R. Il contient
plusieurs packages.
Jupyter notebook: C'est un outil puissant pour développer et présenter de manière interactive des projets de
science des données.
Presented By PhD Amal TRIFA
Introduction générale
Les interpréteurs:
CPython : le plus utilisé, l'interpréteur original écrit en langage C . Utilisé par anaconda.
Jython: fonctionne dans une machine virtuelle Java, permet l'interaction, au sein de la même machine
virtuelle Java, de code écrit en Java avec du code écrit en Python .du code écrit en Java avec du code
écrit en Python.
PyPy: écrit en python, offre une portabilité extrême.
Presented By PhD Amal TRIFA
Introduction générale
Syntaxe:
Python utilise l'indentation pour indiquer un bloc de code.
Par exemple:
a=5
if a > 2:
print(“a est sup!")
a=5
erreur
if a > 2:
print(“a est sup!")
Presented By PhD Amal TRIFA
Notions basiques
Presented By PhD Amal TRIFA
Notions basiques
Les variables
Le type est attribué dynamiquement.
Les variables n’ont pas besoin d’une déclaration à l’avance, on assigne une valeur et le type est
automatiquement assigné et la vérification se fait à chaque lecture ou utilisation de celle ci:
z = -325552 print(type(z))
z = -35.59 print(type(z))
z = -5j print(type(z))
Presented By PhD Amal TRIFA
Notions basiques
Les variables
Pour la declaration des variables, il faut éviter les mots clés, liés à python:
and del from None True as elif global
nonlocal try assert else if not while break
except import or with class False in pass yield
continue finally is raise def for lambda return
Presented By PhD Amal TRIFA
Notions basiques
Les variables: types
Texte : str
Numérique: int, long, float, complex
Séquences: list, tuple
Mappage: dict
ensemble: set, frozenset
Boolean: bool
Presented By PhD Amal TRIFA
Notions basiques
Les variables: mutables Vs non mutables
Presented By PhD Amal TRIFA
Notions basiques
Les variables: mutables Vs non mutables
Immutable VS mutable:
Immuable --→ pas de mise à jour:
Exemple:.
b=5
b += 2 ---→nous ne mettons pas à jour 5 à 7, mais le pointeur est déplacé vers 7.
Par contre les variables mutable comme les listes sont mis à jour localement et on ne
créé pas de nouvelles listes.
Presented By PhD Amal TRIFA
Notions basiques
Les variables: numériques
Forcer la conversion en un type spécifique (casting): Créer un nombre aléatoire:
Random
float(x)
int(y) import random
complex(z) print([Link](6, 15))
long() #randrange ([start,] stop [,step])
Faire des operations multiples: +, -, *, / , **
a= 10 x5= a//b Choice(seq), uniform(x,y)
b = 20 Seed(x), shuffle(list)
x=a+b
x2=a-b à essayer!!
x3=a*b
x4= a/b (avec virgule flottante)
x5=a**2+ b**2
Presented By PhD Amal TRIFA
Notions basiques
Les variables: boolean
>>> 3>4
Valeurs: False --→ false
True
Vous pouvez tester d’autres exemples
Opérations: >>> (3>1) and (0>1)
not, and, or
Comparaison: bool(b) -→ forcer une variable b à être
==, !=, >, >=, < et <= booléenne.
:
Presented By PhD Amal TRIFA
Notions basiques
Les variables: texte
a= ‘administration’ Longueur: len(a)
a= ‘’administration’’ Parcourir:
For x in a:
print(x)
Si plusieurs lignes:
a=‘ ‘ ‘L’administration………………………
………………………………………………… On peut verifier la presence d’un mot:
………………. if “administration" in a:
………………………………’ ‘ ‘ print("oui")
Ou ‘’ ‘’ ‘’ …………’’ ‘’ ‘’
Presented By PhD Amal TRIFA
Notions basiques
Les variables: texte
a= ‘administration’ b=‘amal , imen’ format() pour inserer un int dans un string
L’indexation d’une liste commence par 0:
H=60
print(a[2:5]) =>‘min’ txt = "My name is Amal, and I am {}"
print([Link](H))
print(a[:5]) => ‘admin’
print(a[-5:-2]) => ‘io’ txt = 'It\'s alright.’ # caractère spécial
print(txt)
[Link]()=> élimine les espaces du début et du fin
[Link](“m", “b")=> ‘adbinistration’ \t: tabulation
\n: nouvelle ligne
[Link](",") => [‘amal’, ‘imen’]
c=a+b
print(c) =>?
Presented By PhD Amal TRIFA
Notions basiques
Les variables: texte
a= ‘administration’ b=‘amal , imen’ myDict = {"name": "John", "country":
L’indexation d’une liste commence par 0: "Norway"}
mySeparator = " "
x = [Link](myDict)
isnumeric(): vérifie s’il y a un nombre dans le
string
myTuple = ("John", "Vicky")
x = "#".join(myTuple)
Presented By PhD Amal TRIFA
Notions basiques
Les variables: texte
Exercices :
Inverser le texte suivant en éliminant les caractères spéciaux et en les remplaçant par des espaces:
animaux = "girafe:tigre:singe::souris“.
Calculer le nombre d’apparition du caractère i.
Presented By PhD Amal TRIFA
Notions basiques Changer la valeur d’un item:
L1[0]=2
Les variables: séquences -> List
Pour insérer un item:
[Link](1, 88)=>[12,88,5,0,11,13]
[Link](88)=>[12, 5, 0, 11, 13] #valeur
Un ensemble d’items possédant chacun une [Link](1)=>[12,0,11,13] #index
indexation.
la duplication des valeurs est permise, À partir d’une liste vide:
Type d’items pour une liste: int, str, boolean, list L1=[ ]
Une liste peut contenir plusieurs types [Link](88)
L1=[12, 5, 0, 11, 13]
List() est le constructeur de création d’une liste: Associer deux listes:
L1= List((12,5,0,11,13)) L2=[0,0,0,0]
L1[0]=>12 [Link](L2) )=>[12,88,5,0,11,13,0,0,0,0]
L1[:2]=>[12,5]
L1[-1]=>13
del L1 => supprime la liste
[Link]() => liste vide
Presented By PhD Amal TRIFA
Notions basiques
Les variables: séquences -> List
Pour parcourir une liste: [x+2 for x in thislist]
L1 =[12,5,0,3,13] La méthode la plus courte et efficace
for x in L1:
print(x)
for i in range(len(L1)): Exercice:
print(L1[i]) L1=[‘karim’,’salma’,’hamdi’, ‘Youssef’,’lili’]
Afficher les noms qui intègrent la letter ‘a’
i=0
while i < len(L1):
print(L1[i])
i=i+1
Presented By PhD Amal TRIFA
Notions basiques
Les variables: séquences -> List
sort() est utilisé pour ordonner les items Pour copier une liste:
(ascendant), s’il s’agit de string, c’est l’ordre [Link]()
alphabétique qui est considéré. Ou
L1=[‘karim’,’salma’,’hamdi’, ‘Youssef’,’lili’] L2=List(L1)
print([Link]()) Pour joindre deux listes:
L3=L1+L2
Ou
Ordre descendant : for x in L2:
[Link](reverse=True) [Link](x)
Ou
[Link](L2)
[Link]()=> renverser l’ordre des items
[Link](‘karim’)=>0
Presented By PhD Amal TRIFA
Notions basiques
Les variables: séquences -> Tuple
Pour forcer la modification:
Tuple ->list -> tuple:
C’est un ensemble d’éléments qui ne peuvent pas x = ("apple", "banana", "cherry")
changer après la création, pas d’ajout d’éléments ni y = list(x)
de suppression. y[1] = "kiwi"
Duplication possible. x = tuple(y)
Len()
Un tuple peut inclure plusieurs types à la fois:
L1=tuple((‘karim’, 100, 20, ‘aicha’)) Possibilité d’ajouter tuple1 à tuple 2:
L1[0]=>’karim’ L1 = ("apple", "banana", "cherry")
L1[-1]=>’aicha’ L2= ("orange",)
L1 += L2
if “aicha" in L1:
print("Yes") Del L1=> supprime L1
Presented By PhD Amal TRIFA
Notions basiques
Les variables: séquences -> Tuple
Subdiviser le tuple: Pour dupliquer le contenu d’un tuple plusieurs fois:
pers = (“amine", “karime", “salma") n=2
(a, b, c) = pers pers = (“amine", “karime", “salma")
print(a) L1 = pers * n
print(b)
print(c)
Le matching n’est pas equitable:* count():Renvoie le nombre de fois qu'une valeur
pers = (“amine", “karime", “salma“, “imen”) apparaisse dans le tuple.
(a,b,*c)=pers index (): Recherche l’indexe une valeur spécifiée
c=>[“salma”, “imen”] liste
Presented By PhD Amal TRIFA
Notions basiques
Les variables: séquences -> Set
Pour supprimer un élément d'un ensemble, utilisez la
méthode remove () ou discard().
Un ensemble est une collection non ordonnée, non [Link](“taha")
modifiable* et non indexée.
Pas de duplication.
1 et True sont considérés une duplication et ne
peuvent pas figurer dans un set Pour éliminer le 1er item on utilise pop().
[Link]() -> élimine amine
pers = {“amine", “karime", “salma“}
[Link](“taha")
set3 = [Link](set2) #union
Pour ajouter plusieurs élements: set3=[Link](set2) #union
Pers1={“nada”,”jamel”} set4= [Link](set2) #intersection
[Link](pers1) [Link](set2)=> true si tt elt ds set1 existent ds
set2
Presented By PhD Amal TRIFA
Notions basiques
my_dict = {
1: "Hello",
Les variables: mappage -> Dict
(1, 2): "Hello Hi",
3: [1, 2, 3] }
len(my_dict)=>3
Un dictionnaire est une collection ordonnée,
modifiable et qui n'autorise pas les doublons. Accéder à une Valeur à travers key:
Composé de :key et value. my_dict[1]=>”Hello”
my_dict[1]= “amal”
Les clés (key) de dictionnaire doivent être
inchangeables, telles que les tuples, les chaînes,
les entiers, etc. Nous ne pouvons pas utiliser Ajouter un élément au dictionnaire en attribuant une
d'objets mutables (changeables) tels que les valeur à une nouvelle clé:
listes comme clés. my_dict[2]=2
Ou
Les valeurs :values: sont mutables. dict2={5:”rim”}
my_dict.update(dict2)
Presented By PhD Amal TRIFA
Notions basiques Un dict peut contenir un dict:
Les variables: mappage -> Dict myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
for x in my_dict.values(): },
Try itprint(x)
Yourself » "child2" : {
"name" : "Tobias",
"year" : 2007
for x in my_dict.keys(): },
print(x) "child3" : {
"name" : "Linus",
"year" : 2011
for x, y in my_dict.items(): }
print(x, y)
myfamily["child2"]["name"]=>”Tobias”
Presented By PhD Amal TRIFA
Notions basiques
Les variables: mappage -> Dict
Créer un dict:
[Link]()=>[child1, child2, child3]
Try it Yourself »
[Link][‘child1’]=> {
"name" : "Emil", nombre_de_pneus = {}
"year" : 2004 nombre_de_pneus["voiture"] = 4
} nombre_de_pneus["vélo"] = 2
[Link]()=> supprime le dernier
item
[Link](“child1”)=> supprime cet item
Presented By PhD Amal TRIFA
Notions basiques
Les variables: mappage -> Dict
myfamily = {
"child1" : {
"name" : "Emil",
[Link]()=>[child1, child2, child3] "year" : 2004
Try it Yourself »
[Link][‘child1’]=> { },
"name" : "Emil", "child2" : {
"year" : 2004 "name" : "Tobias",
} "year" : 2007
},
[Link]()=> supprime le dernier "child3" : {
item "name" : "Linus",
[Link](“child1”)=> supprime cet item "year" : 2011
}
Presented By PhD Amal TRIFA