Cours Algorithme Structures de Données Python
Cours Algorithme Structures de Données Python
Dr Sibiri TIEMOUNOU
Enseignant-chercheur à EPO
Spécialiste en Science de données et
Traitement du signal
@mail : [Link]@[Link]
Plan du cours
2. Fonctions et modules
3. Structures de données
4. Gestion de fichiers
28/11/2020
2
Sommaire
Objectifs de ce cours
Mise à niveau sur les notions de base du langage Python
Prise en compte du nouveau programme (le langage Python n’ayant pas été en vue jusque là)
Compétences visées
Etre capable de lire, comprendre et d’écrire des programmes en Python
Etre autonome dans le développement d’applications de petites tailles sous
Python
Evaluation
A définir
3
1. Langage Python - Notions de base
28/11/2020
4
1.1 Introduction
….
28/11/2020
5
1.1 Introduction
28/11/2020
6
1.1 Introduction
Exemple :
Affiche « A » à l’écran
Affiche une zone où l’utilisateur pourra saisir son nom
Si l’utilisateur clique sur le bouton « fermer », alors le programme se ferme
7
1.1 Introduction
Langages compilés
Le code écrit par le développeur est d’abord compilé (conversion du
code source en langage machine) avant d’être exécuter
8
1.1 Introduction
Langages interprétés
Ces langages n’ont pas besoin de compilation. Le code source est lu et
traduite pour être exécuté
9
1.1 Introduction
10
1.1 Introduction
11
1.1 Introduction
12
1.1 Introduction
Langage portable
fonctionne sous de nombreux systèmes d'exploitation
Linux, MacOS, Windows
14
1.1 Introduction
15
1.1 Introduction
16
1.1 Introduction
18
1.1 Introduction
19
1.2 Exemple de code Python
20
1.2 Exemple de code Python
from A import B
A partir de la
librairie A importer la
sous libraire (ou
fonctions) B
21
1.2 Exemple de code Python
Utilisation de variable
Pas besoin de spécifier
son type
Déclaration et initialisation de
tableau
Appel de fonctions
22
1.3 Mise au point d’un programme – Recherche d’erreurs
Types d’erreurs
Erreur de syntaxe :
Python ne peut exécuter un programme que si sa syntaxe est parfaitement
correcte. Dans le cas contraire, le processus s’arrête et vous obtenez un
message d’erreur.
Exemple d’erreur récurrente : problème d’indentation
24
1.4 Interpréteur de commande Python
Il permet de :
Effectuer de simple calcul (Addition, soutraction, …)
Tester un script python
25
1.5 Les instructions
Instructions simples
En python, une instruction simple est formée d'une seule ligne, délimitée par le
caractère invisible
>>> 35 / 5
>>> 10 * 3
26
1.5 Les instructions
Instructions composées
En python, la structuration des blocs d’instructions se fait grâce à l’indentation
(décalage visuel avec des espaces)
les lignes consécutives qui ont la même indentation appartiennent au même bloc ;
Une ligne ayant une indentation moindre (ou la fin du programme) termine le bloc
d'instructions constitué par les lignes qui la précèdent.
Exemple :
27
1.6 Les variables
Données et variables
Une variable permet de stocker et de manipuler des données. Il est désigné par
un nom
Exemple : x = 2 (variable appelé x et ayant la valeur 2)
les caractères spéciaux tels que $, #, @, etc. sont interdits, à l’exception du caractère
_ (souligné).
29
1.6 Les variables
Types élémentaires
Même si la déclaration d’une variable ne requiert pas son type, une variable est
en réalité typée sous Python
Les entiers (int)
Exemple : x = 2
Identique au langage C
Affectation: =
Exemple
x=3
if x %2 == 0:
print(x, "est un multiple de 2")
else
print(x, « n’est pas un multiple de 2 ")
31
1.7 Les opérateurs
32
1.8 Les entrées/sorties
Affichage à l’écran
Utiliser print()
Exemple :
print("my flowers are beautiful ")
nbEtudiant = 15
print("le nombre d’étudiant dans la classe est: ", nbEtudiant)
Lecture au clavier
Utiliser input("… ")
Exemple
# Programme testant si une année, saisie par l'utilisateur, est bissextile ou non
annee = input("Saisissez une année : ") # On attend que l'utilisateur saisisse l'année qu'il désire tester
annee = int(annee) # Risque d'erreur si l'utilisateur n'a pas saisi un nombre
33
1.9 Structures conditionnelles
Elles permettent d'écrire dans le programme des règles comme « Si ceci arrive, alors
fais cela » ;
sinon : else :
# Blocs d’instruction 3 #bloc d’instruction 3
Fin si # condition fausse
Remarques :
Il y a « : » à la fin de la condition
Il n’ y a d’accolades (à la différence du C)
35
1.9 Structures conditionnelles
La condition « if »
Tableau de symbole à connaître par cœur
Symbole Signification
== Est égal à
> Est supérieur à
< Est inférieur à
<= Est inférieur ou égal à
>= Est supérieur ou égal à
!= Est différent de
Symbole Signification
and et
or ou
not non
36
1.9 Structures conditionnelles
La condition « if »
Exercice: On souhaite écrire un programme permettant à l’utilisateur de saisir son
année de naissance et de déterminer si l’année saisie est bissextile ou non. Il affiche à
l’écran le résultat.
Si une année n'est pas multiple de 4, on s'arrête là, elle n'est pas bissextile.
37
1.9 Structures conditionnelles
La condition « if »
Solution
# Programme testant si une année, saisie par l'utilisateur est bissextile ou non
annee = input("Saisissez une année : ") # On attend que l'utilisateur saisisse l'année qu'il désire tester
bissextile = False # On crée un booléen qui vaut vrai ou faux selon que l'année est bissextile ou non
if annee % 400 == 0:
bissextile = True
elif annee % 100 == 0:
bissextile = False
elif annee % 4 == 0:
bissextile = True
else:
bissextile = False
38
1.10 Les boucles
Console Python
2 * 7 = 14
3 * 7 = 21
4 * 7 = 28
5 * 7 = 35
6 * 7 = 42
7 * 7 = 49
8 * 7 = 56
9 * 7 = 63
10 * 7 = 70
Très fastidieux :
Solution : utilisation de boucle 39
1.10 Les boucles
i = 0 # C'est notre variable compteur que nous allons incrémenter dans la boucle
40
1.10 Les boucles
Résultats
41
1.10 Les boucles
La boucle« for »
Syntaxe
Résultats
B
o
n
j
o
u
r
42
…
1.10 Les boucles
La boucle« for »
Fonction « Range »
Il permet de créer rapidement une boucle
Elle prend trois paramètres
debut : numéro de départ de la liste
fin : dernier élément de la liste
inc : l’incrémentation à chaque itération
i = 0 # C'est notre variable compteur que nous allons incrémenter dans la boucle
43
1.10 Les boucles
Exemple
Résultat
44
1.11 Les Listes
>>> ma_liste = []
>>> liste = []
>>> liste
[]
>>> [Link](1)
>>> liste
[1]
>>> [Link]("ok")
>>> liste
[1, 'ok']
46
1.12 Exercices
Exercice 5 : Soit un tableau contenant les valeurs suivantes : 10, 1, 78, 11, 45, 6, 12,
75. Ecrire un programme permettant d’initialiser le tableau et d’afficher le
minimum et le maximum du tableau
47
2. Fonctions et modules
28/11/2020
48
2.1 Généralités
des modules :
Bout de codes enfermé dans un fichier
permettent de regrouper plusieurs fonctions selon le même principe dans un
fichier.
On parle souvent de script ou de librairie
Exemple : Toutes les fonctions mathématiques, par peuvent être placées dans
un module dédié aux mathématiques
49
2.2 Les fonctions
Appel de fonction
Pour appeler une fonction, on utilise le nom de la fonction en précisant les
paramètres, s’il ya en
51
2.2 Les fonctions
Code python
def table_par_7():
nb = 7
i = 0 # Notre compteur ! L'auriez-vous oublié ?
while i < 10: # Tant que i est strictement inférieure à 10,
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1 # On incrémente i de 1 à chaque tour de boucle.
Console python
>>> table_par_7()
1*7=7
2 * 7 = 14
3 * 7 = 21
4 * 7 = 28
5 * 7 = 35
6 * 7 = 42
7 * 7 = 49
8 * 7 = 56
9 * 7 = 63
10 * 7 = 70
>>>
52
2.2 Les fonctions
Code python
def afficherMax(a, b):
if a > b :
print( ”le maximum de ", a, ”et", b, ”est", a )
else
print( ”le maximum de ", a, ”et", b, ”est", b )
Console python
>>> afficherMax(45, 10)
Le maximum de 45 et 10 est 45
>>>
53
2.2 Les fonctions
Code python
Console python
>>> afficherMax(45)
Le maximum de 45 et 10 est 45
>>>
54
2.2 Les fonctions
L’instruction « return »
Mot clé permettant à une fonction de renvoyer une valeur
La valeur renvoyé pourra être stockée dans une variable
def carre(valeur):
return valeur*valeur
Console python
>>> a = carre(9)
>>> print(a)
81
>>>
def table_par_7():
nb = 7 # variable locale
i = 0 # variable locale
while i < 10: # Tant que i est strictement inférieure à 10,
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1 # On incrémente i de 1 à chaque tour de boucle.
Les variables globales : elles sont définies dans le programme appelant et ont donc
une portée globale. Dans une fonction, une variable globale ne peut être utilisé qu’en
mode lecture uniquement
a = 42
def change(valeur):
a = valeur
print(a) # Affiche `42`
change(10)
print(a) # Affiche ... `42` encore ? C'est universel ?
56
2.2 Les fonctions
a = 42
def change(valeur):
global a
a = valeur
print(a) # Affiche `42`
change(10)
print(a) # Affiche `10`
Les variables formels : Il s’agit des variables d’entrées servant d’échanges entre les
programmes appelant et appelé
57
2.3 Les modules
Un module python fait généralement appel à des éléments qui sont présents
dans d'autres modules python
Généralement, soit ces modules font déjà partie du langage python (ex.
random, numpy) soit on peut les trouver sur internet (ex. pandas librairie très
utile science de données)
2.3 Les modules
Pour appeler une fonction contenue dans un module, il faut taper le nom du
module suivi de « . »
>>> [Link](16)
4>
>>
59
2.3 Les modules
>>> help("math")
Help on built-in module math:
NAME
math
FILE
(built-in)
DESCRIPTION
This module is always available. It provides access to the
mathematical functions defined by the C standard.
FUNCTIONS
acos(...)
acos(x)
Return the arc cosine (measured in radians) of x.
acosh(...)
acosh(x)
Return the hyperbolic arc cosine (measured in radians) of x.
asin(...)
-- Suite --
60
2.3 Les modules
Exemple
[Link](25)
Très utile pour « retrouver ses repaires » dans la liste interminable des
modules proposés par python
61
2.3 Les modules
Il est donc possible d’importer une partie des fonctionnalités contenues dans un
module. Pour cela, il suffit d’utiliser la méthode suivante :
from … import …
Exemple
>>> from math import fabs
>>> fabs(-5)
5>
>> fabs(2)
2>
>>
Interpréteur python
Jusque là, on avons toujours considéré « l’interpréteur python »
Avantages :
Permet d’interagir avec un programme et de tester le résultat à chaque
instruction
Inconvénients:
Le programme écrit, est effacé à la fermeture de la fenêtre
Travail inutile (toute une journée de travail !!!!!)
Solution:
Mettre notre code (ou programme) dans un fichier que nous pourrons
lancer à volonté
63
2.4 Pas à pas vers la modularité
>>>python [Link]
Entrer une année :
-
65
3. Structure de données
28/11/2020
66
3.1 Généralités
Définition
Une structure de données est une variable contenant une collection de
données pouvant être structurée ou non
Une liste est une structure de données
Notion d’objet
un objet est une variable, pouvant elle-même contenir d’autres variables et
fonctions
En réalité, toutes les variables utilisées jusqu’ici sont des objets (idem pour les
fonctions)
67
3.2 Retour sur les chaines de caractères
En python, les chaines de caractères sont gérés par un objet (ou classe) appelé
« str »
Prenons un exemple:
Ecrire une fonction prenant en paramètre un chaine de caractère et
renvoyant cette chaîne en minuscule
C’est tout là, l’importance des objets : l’objet « str » contient des
méthodes prédéfinies permettant de manipuler les chaines de
caractères.
Pour faire appel à une méthode (ou variable) d’un objet, on procède comme suit :
[Link]()
Résolution de l’exercice
69
3.2 Retour sur les chaines de caractères
70
3.2 Retour sur les chaines de caractères
Méthode « format(…) »
>>> prenom = "Paul"
>>> nom = "Dupont"
>>> age = 21
>>> print( "Je m'appelle {0} {1} et j'ai {2} ans.".format(prenom, nom, age) )
Je m'appelle Paul Dupont et j'ai 21 ans.
quand Python exécute cette méthode, il remplace dans notre chaîne {0} par la
première variable passée à la méthode format (soit le prénom), {1} par la deuxième
variable… et ainsi de suite. 72
3.2 Retour sur les chaines de caractères
Exemple
73
3.2 Retour sur les chaines de caractères
Exemple
>>> age = 21
>>> message = "J'ai " + age + " ans."
Exemple
ma_chaine[indice_debut : indice_fin]
Exemple
76
3.2 Retour sur les chaines de caractères
Exemple
77
3.2 Retour sur les chaines de caractères
Exercices
1. Déterminez vous-même ce qui se passe, dans la technique de slicing, lorsque
l’un ou l’autre des indices de découpage est erroné, et décrivez cela le mieux
possible. (Si le second indice est plus petit que le premier, par exemple, ou bien
si le second indice est plus grand que la taille de la chaîne).
78
3.3 Retour sur les listes
Une liste est un objet capable de contenir n’importe quel type d’objet
Une liste peut elle-même contenir des listes d’objets
Création de liste
Liste vide
>>> ma_liste = [] # On crée une liste vide
Liste initialisée
79
3.3 Retour sur les listes
Méthode « insert »
Insertion d’un élément à une position donnée
80
3.3 Retour sur les listes
81
3.3 Retour sur les listes
Remarque : la méthode « del » n’est une méthode de l’objet « Liste » mais une
fonctionnalité de python 82
3.3 Retour sur les listes
Exemple
83
3.3 Retour sur les listes
Parcours de liste
Utilisation des boucles
>>> ma_liste = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> i = 0 # Notre indice pour la boucle while
>>> while i < len(ma_liste):
... print(ma_liste[i])
... i += 1 # On incrémente i, ne pas oublier !
...
a
b
c
d
e
f
g
h
>>> # Cette méthode est cependant préférable
... for elt in ma_liste: # elt va prendre les valeurs successives des éléments de ma_liste
... print(elt)
...
a
b
c
d
e
f
g
h
>>> 84
3.3 Retour sur les listes
Parcours de liste
Méthode « enumerate »
Elle prend en paramètre une liste et renvoie une liste d’objets contenant
deux valeurs par élément
l'indice et l'élément de la liste parcouru
Exemple
>>> ma_liste = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> for elt in enumerate(ma_liste):
... print(elt)
...
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')
(6, 'g')
(7, 'h')
>>>
85
3.3 Retour sur les listes
Parcours de liste
Méthode « enumerate »
Elle prend en paramètre une liste et renvoie une liste d’objets contenant
deux valeurs par élément
l'indice et l'élément de la liste parcouru
Exemple
L’exemple précédent peut s’écrire
>>> ma_liste = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> for i, elt in enumerate(ma_liste):
... print("( {}, \’{}’\.".format(i, elt))
...
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')
(6, 'g')
(7, 'h')
>>>
86
3.3 Retour sur les listes
Les tuples
Ils sont vus comme des liste, sauf qu'on utilise comme délimiteur des
parenthèses au lieu des crochets
Exemple
tuple_vide = ()
tuple_non_vide = (1,)
tuple_non_vide = (1, 3, 5)
87
3.3 Retour sur les listes
Les tuples
A quoi servent-ils ?
Très utiles quand on doit travailler sur des données qui ne pouvant être
modifiées
Exemple
Code python Console python
88
3.3 Retour sur les listes
Exemple
>>> ma_chaine = "Bonjour à tous"
>>> ma_chaine.split(" ")
['Bonjour', 'à', 'tous']
>>>
Pour convertir une liste de plusieurs chaines que l’on souhaite fusionner en une
seule, il suffit d’utiliser la fonction « join(…) »
>>> ma_liste = ['Bonjour', 'à', 'tous']
>>> " ".join(ma_liste)
'Bonjour à tous'
>>>
89
3.3 Retour sur les listes
Syntaxe
def fonction(*parametres):
90
3.3 Retour sur les listes
91
3.3 Retour sur les listes
Exercices
Soit le texte suivant : « Je voudrais à cet instant dire que notre communauté, la
CEAO, a regagné en vitalité, en dynamisme. Notre communauté a regagné un espoir, de
par la qualité de nos travaux. Les résultats qui ont été présentés tout à l’heure dans le
communiqué final traduisent une part, mais seulement une part de ce que nous sommes
décidés à partir de maintenant à faire pour cette CEAO. »
A partir de cette fonction, déterminer le nombre d’occurrence des mots définis ci-
dessus.
92
3.4 Dictionnaires
Chaque élément d’une liste est rangé dans un ordre bien précis
Pour accéder à un élément, on passe toujours par son indice (entier
naturel)
Il existe une autre structure de données plus élaborée n’utilisant pas la notion
d’indice mais plutôt de clé
Les dictionnaires est l’une des structures de données les plus utilisées en
Python
93
3.4 Dictionnaires
Définition
Un dictionnaire est un objet pouvant en contenir d'autres, à l'instar des listes
Ces clés peuvent être des chaines de caractères (c’est le cas la plupart du
temps) ou des objets
Dans les listes, la clé est l’indice de l’élément
Les données d’un dictionnaire ne sont pas ordonnées contrairement aux listes
94
3.4 Dictionnaires
95
3.4 Dictionnaires
>>> mon_dictionnaire = {}
>>> mon_dictionnaire["pseudo"] = "Prolixe"
>>> mon_dictionnaire["mot de passe"] = "*"
>>> mon_dictionnaire
{'mot de passe': '*', 'pseudo': 'Prolixe'}
>>>
Procédure
On spécifie la clé entre crochets
Si la clé n'existe pas dans le dictionnaire, elle y est ajoutée avec la valeur
spécifiée après le signe =
96
3.4 Dictionnaires
Remarques
Un dictionnaire ne peut naturellement pas contenir deux clés identiques
La seconde valeur écrase la première
Les clés peuvent être de tout type (cependant le type doit être unique)
97
3.4 Dictionnaires
echiquier = {}
echiquier['a', 1] = "tour blanche" # En bas à gauche de l'échiquier
echiquier['b', 1] = "cavalier blanc" # À droite de la tour
echiquier['c', 1] = "fou blanc" # À droite du cavalier
echiquier['d', 1] = "reine blanche" # À droite du fou
# ... Première ligne des blancs
echiquier['a', 2] = "pion blanc" # Devant la tour
echiquier['b', 2] = "pion blanc" # Devant le cavalier, à droite du
pion
# ... Seconde ligne des blancs
99
3.4 Dictionnaires
100
3.4 Dictionnaires
2 méthodes de parcours:
Parcours des clés
101
3.4 Dictionnaires
Remarque :
L’ordre d’apparition des clés ne suit pas l’ordre de l’initialisation
102
3.4 Dictionnaires
103
3.4 Dictionnaires
Exemple
104
3.4 Dictionnaires
Exemple
105
3.5 Que faut-il retenir ?
Les types de données utilisés jusqu'ici sont en fait des classes. Chaque objet est
modelé sur une classe
Chaque classe (ou objet) définit certaines fonctions, appelées méthodes, qui seront
accessibles depuis l'objet grâce à [Link](arguments)
Une liste est un structure ordonnée pouvant contenir plusieurs objets de types
différents
On accède à un élément grâce à son indice
106
4. Gestion de fichiers
28/11/2020
107
4.1. Introduction
Inconvénients
L’information n’y est conservée que sous réserve d’une alimentation
électrique permanente
Sinon perte totale des résultats obtenus
La mémoire n’est accessible que par l’ordinateur auquel elle appartient
La communication entre 2 machines suppose qu’à un moment donné, les
données soient représentées ailleurs qu’en mémoire
108
4.1. Introduction
Notion d’entrée/sortie
Mécanisme de sauvegarde (Machine Fichiers) et d’importation de données
(Fichiers Machine)
109
4.1. Introduction
le chemin relatif
Chemin à partir de là où l’on se trouve actuellement
Exemple : si on se trouve dans le dossier « C:\TP_Python » et que l'on
souhaite accéder au fichier « [Link] », le chemin relatif menant à ce
fichier sera tout simplement [Link].
110
4.2. Lecture et écriture dans un fichier
Ouverture de fichier
Avant d’écrire ou de lire dans un fichier, il est nécessaire de l’ouvrir
Syntaxe:
Ouverture de fichier
Exemple
# coding: utf-8
fichier = open("[Link]", "r")
print [Link]()
[Link]()
# coding: utf-8
fichier = open("[Link]", « wb")
print [Link]()
[Link]()
112
4.2. Lecture et écriture dans un fichier
Fermeture de fichier
On utilise la fonction « close » de l’objet « fichier »
Exemple:
# coding: utf-8
[Link]()
113
4.2. Lecture et écriture dans un fichier
Exemple :
>>> mon_fichier = open("[Link]", "r")
>>> contenu = mon_fichier.read()
>>> print(contenu)
C'est le contenu du fichier. Spectaculaire non ?
>>> mon_fichier.close()
>>>
Etant donné que le contenu est une chaine de caractères, on peut naturellement
tout faire :
Conversion d’une partie ou l’intégralité du texte
Possibilité de parcourir le texte ligne par ligne et de les traiter
Le symbole « \n » traduit les sauts de lignes
… 114
4.2. Lecture et écriture dans un fichier
Exemple:
115
4.2. Lecture et écriture dans un fichier
Remarque :
Pour manipuler le contenu d’un fichier, il doit être ouvert
Cependant il était déjà ouvert, ce qui peut engendrer des bugs
Une fois des opérations sont terminées sur un fichier, il faut TOUJOURS LE
FERMER !!!
116
MERCI
28/11/2020
117