0% ont trouvé ce document utile (0 vote)
34 vues117 pages

Cours Algorithme Structures de Données Python

Transféré par

aristidebonkoungou6
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues117 pages

Cours Algorithme Structures de Données Python

Transféré par

aristidebonkoungou6
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Classes Préparatoires d’entrée dans

les Grandes Ecoles (CPGE)

Algorithme et 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

1. Langage Python - Notions de base

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à)

 Comprendre les différents de structures de données utilisées en Python

 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

 Qu’est-ce que l’algorithmique?


 Un algorithme est une suite finie d'instructions, écrites en langage naturel, qui
peuvent être exécutées les unes à la suite des autres pour résoudre un
problème.

 L'algorithme ne dépend pas du langage de programmation dans lequel il sera


traduit, ni de la machine qui exécutera le programme.

 Exemples d'algorithmes mis en œuvre « naturellement » tous les jours :


 recette de cuisine,

 notice de montage d'un appareil

 tri de nombres par ordre croissant,

 recherche dans un annuaire

 ….

28/11/2020
5
1.1 Introduction

 Qu’est-ce qu’un langage de programmation?


 Pour communiquer avec quelqu’un, vous devez parler le même langage
 Avec un ordinateur, difficile de communiquer car ne comprenant que des 0 et 1

 Pour communiquer avec un ordinateur, il faut un interpréteur (ou logiciel)


 Charger de transformer un message en 0 et 1

28/11/2020
6
1.1 Introduction

 Qu’est-ce qu’un langage de programmation?


 Un ordinateur obéit aux ordres que nous lui donnons

 Ces ordres s’appellent des instructions

 Un langage est donc une suite d’instructions

 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

 Un langage de programmation permet d’écrire toutes ces instructions


(aussi appelé code source) dans un langage de comprise par le traducteur
 Charger de transformer un message en 0 et 1

7
1.1 Introduction

 Quels sont les types de langage ?


 Il existe 2 types de langages

 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

 Quels sont les types de langage ?


 Il existe 2 types de langages

 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

 Quelques exemples de languages?


 Les langages

Langages compilés Langages interprétés


-C -Python
- C++ - Javascript
- Java - PHP
- Pascal - Matlab
-… - Perl
-…

10
1.1 Introduction

 C’est quoi le langage Python ?


 C’est un langage de programmation inventé par Guido Van Rossum
 La 1ère version est apparu en 1991

 C’est un langage de programmation interprété


 Pas nécessaire de compiler avant de l’exécuter

11
1.1 Introduction

 C’est quoi le langage Python ?

 Un des langages les plus utilisés au monde


 Elu Meilleur langage en 2020 (source : IEEE : top 10 des meilleurs
langages de programmation de l’année 2020)

12
1.1 Introduction

 Quelles sont les caractéristiques du langage Python?


 Langage facile à apprendre, à comprendre et à écrire
 Il n’ y a pas de pointeurs explicites en Python (contrairement aux langages
C/C++)

 Langage Orienté Objet


 Supporte l’héritage multiple et la surcharge des opérateurs

 Langage portable
 fonctionne sous de nombreux systèmes d'exploitation
 Linux, MacOS, Windows

 Doté d’une communauté active


 Utile pour résoudre des problèmes de bugs
13
1.1 Introduction

 Qui utilise Python ?

14
1.1 Introduction

 Que peut-on faire avec Python?


 Programmation des progiciels (ensemble de plusieurs logiciels pouvant
fonctionner ensemble)

 Très utilisé en robotique (technologie Raspbberry)

 Internet des objets (IoT) et Intelligence artificielle (IA)

15
1.1 Introduction

 Distribution de Python et bibliographie


 Site officiel : [Link]
 Manuel de références
 Documentation des bibliothèques de fonctions
 Version actuelle : 3.8.2

 Editeurs IDE Python


 PyCharm
 L’un des meilleurs IDE (très complet et gratuit)

 Sublime Text (ou notepad++)


 Editeurs (très complet et gratuit)
 Spyder
 Véritable environnement développement et très intuitif
 Intégré dans le framework « Anaconda »

16
1.1 Introduction

 Distribution de Python et bibliographie


 Site officiel : [Link]
 Manuel de références
 Documentation des bibliothèques de fonctions
 Version actuelle : 3.8.2

 Editeurs IDE Python


 PyCharm
 L’un des meilleurs IDE (très complet et gratuit)

 Sublime Text (ou notepad++)


 Editeurs (très complet et gratuit)
 Spyder
 Véritable environnement développement et très intuitif
 Intégré dans le framework « Anaconda »
 Jupyter notebook
 Environnement dédié à la science des données 17
1.1 Introduction

 Comment installer Python?


 En téléchargeant la dernière version sur le site officielle
« [Link] »

 Avec cette version, on a principalement accès à l’invite de commande


« Python’

 Pour télécharger l’IDE « Spyder », il faudra télécharger le framework


« Anaconda » en utilisant le lien suivant :
« [Link] » en veillant à
bien sélectionner la version correspondante à votre système d’exploitation

18
1.1 Introduction

 Distribution de Python et bibliographie


 Bibliographies
 Programmation Python, par Tarek Ziadé, Editions Eyrolles, Paris,
2006, 538 p., ISBN 978-2-212-11677-9

 Au coeur de Python, volumes 1 et 2, par Wesley J. Chun, traduction de


Python core programming, 2d edition (Prentice Hall) par Marie-Cécile
Baland, Anne Bohy et Luc Carité, Editions CampusPress, Paris, 2007,
respectivement 645 et 385 p., ISBN 978-2-7440-2148-0 et 978-2-7440-
2195-4.

 Python : How to program, par Deitel, Liperi & Wiedermann, Prentice


Hall, Upper Saddle River – NJ 07458, 2002, 1300 p., ISBN 0-13-092361-3,

19
1.2 Exemple de code Python

 Commentaires multi lignes


""" commentaire

"""

 Commentaires sur une ligne


# commentaire

20
1.2 Exemple de code Python

 Appel à des libraires


prédéfinies (bibliothèque
standard) ou celles
implémentées par l’utilisateur

Mot clé : import

 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

 Erreurs sémantiques (ou erreurs de logique):


 Le code s’exécute parfaitement mais le résultat attendu n’est pas correct.
 Exemple :

 Erreurs à l’exécution (ou Runtime error):


 Le programme fonctionne parfaitement mais se plante lors d’une situation
particulière
 Exemple : réaliser une division par 0 ou accéder à un fichier qui n’existe
pas
23
1.3 Mise au point d’un programme – Recherche d’erreurs

 Recherche des erreurs (débogage)


 L’ensemble des techniques que l’on met en œuvre pour les détecter et les
corriger s’appelle « debug » (ou « débogage»).

 L’une des compétences les plus importantes à acquérir au cours de votre


apprentissage est celle qui consiste à déboguer efficacement un programme. Il
s’agit d’une activité intellectuelle parfois énervante mais toujours très riche,
dans laquelle il faut faire montre de beaucoup de perspicacité.

24
1.4 Interpréteur de commande Python

 Calcul avec Python


 Tout comme Windows possède son invite de commande, le langage Python en
possède

 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

 Contrairement aux langages comme le C, il n’y a pas de point virgule « ; » à la


fin d’une instruction

 Exemples d'instructions simples (dans l'interpréteur python)


 >>> 2 + 3

 >>> 35 / 5

 >>> 10 * 3

 >>> print( "bonjour" * 4)

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.

 Une instruction composée est formée d'une instruction d'introduction terminée


par le caractère deux points « : », suivi par un bloc d'instructions simples (ou
elles-mêmes structurées) indentées par rapport à cette instruction
d'introduction

 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)

 Noms de variables et mots réservés


 Les noms de variables sont des noms que vous choisissez vous-même assez librement
mais ils doivent respecter quelques règles
 Ils ne commenceront pas par un chiffre.

 Ils peuvent avoir des lettres, en minuscule ou majuscule et des chiffres

 les caractères spéciaux tels que $, #, @, etc. sont interdits, à l’exception du caractère
_ (souligné).

 La casse est significative (les caractères majuscules et minuscules sont distingués).


 Attention : Joseph, joseph, JOSEPH sont donc des variables différentes.
Soyez attentifs !

 Ils ne doivent pas être un mot-clé réservé par Python


28
1.6 Les variables

 Noms de variables et mots réservés


 Voici la liste non exhaustive des mots réservés en Python

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

 Les réels (float, double)


 Exemple : a = 5.0

 Les chaines de caractère (string)


 Exemple : ma_chaine = "my flowers are beautiful "

 Les booléens (bool)


 Constants : True, False
 Exemple : is_poor = False

 Pour connaitre le type d’une variable, saisir :


type (ma_variable) 30
1.7 Les opérateurs

 Identique au langage C
 Affectation: =

 Opérateurs arithmétiques binaires (deux opérandes)


 Addition: +
 Soustraction: -
 Multiplication: *
 Division: / (division entière dans le cas de « int »)
 Modulo: % (reste de la division entière)

 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

 Affectation avec opération (Idem. Langage C)


 Addition: +=, ex : a += b  a = a + b
 Soustraction: -=, ex : a -= b  a = a – b
 Multiplication: *=, ex : a *= b  a = a * b
 Division: /=, ex : a /= b  a = a / b
 Modulo: %=, ex : a %= b  a =a % b

 Opérateurs de comparaison (Idem. Langage C)


 < (inférieur) , > (supérieur) , <= (inférieur ou égal) , >= (supérieur ou égal) , == (égal) ,
!= (différent de)

 Opérateurs logiques (Python uniquement)


 Négation: not
 ET logique: and
 OU logique: or
Par exemple : ((x<12) and ((y>0) and not(z>4) ))

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

if annee % 400 == 0 or (annee % 4 == 0 and annee % 100 != 0):


print("L'année saisie est bissextile.")
else:
print("L'année saisie n'est pas bissextile.")

33
1.9 Structures conditionnelles

 Elles permettent d'écrire dans le programme des règles comme « Si ceci arrive, alors
fais cela » ;

 Algorithme « si … alors, sinon… »  Python « if …, else… »

Si condition1 alors : if condition :

# bloc d’instruction 1 # bloc d’instruction 1


#condition vraie #condition vraie
Sinon si condition2 alors : elif condition :

#bloc d’instruction 2 #bloc d’instruction 2


# condition vraie # condition vraie

sinon : else :
# Blocs d’instruction 3 #bloc d’instruction 3
Fin si # condition fausse

 Les blocs « elif » et « else » sont optionels


 Possibilité d’imbriquer les conditions
34
1.9 Structures conditionnelles

 Remarques :
 Il y a « : » à la fin de la condition

 Il n’ y a d’accolades (à la différence du C)

 Veuillez à bien aligner les instructions sous les conditions

 Source du problème d’indentation

 Exercice : Ecrire un programme demandant à l’utilisateur de saisir sa moyenne dans


deux unités d’enseignement (moyenneUE 1 & moyenneUE2) et sa moyenne générale puis
de réaliser l’algorithme suivant en Python

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 de combinaison des conditions

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.

 La règle est la suivante:

 Si une année n'est pas multiple de 4, on s'arrête là, elle n'est pas bissextile.

 Si elle est multiple de 4, on regarde si elle est multiple de 100.

 Si c'est le cas, on regarde si elle est multiple de 400.

 Si c'est le cas, l'année est bissextile.

 Sinon, elle n'est pas bissextile.

 Sinon, elle est 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

annee = int(annee) # Risque d'erreur si l'utilisateur n'a pas saisi un nombre

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

if bissextile: # Si l'année est bissextile


print("L'année saisie est bissextile.")
else:
print("L'année saisie n'est pas bissextile.")

38
1.10 Les boucles

 Elles permettent de répéter une opération autant de fois que nécessaire;

 Exemple : Ecrire un programme affichant la table de multiplication par 7 (sans


utilisation de boucle)
 Code python
print(" 1 * 7 =", 1 * 7)
print(" 2 * 7 =", 2 * 7)
print(" 3 * 7 =", 3 * 7)
print(" 4 * 7 =", 4 * 7)
print(" 5 * 7 =", 5 * 7)
print(" 6 * 7 =", 6 * 7)
print(" 7 * 7 =", 7 * 7)
print(" 8 * 7 =", 8 * 7)
print(" 9 * 7 =", 9 * 7)
print("10 * 7 =", 10 * 7)

 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

 La boucle« while » (ou « tant que … faire »)


 Syntaxe

while condition :  Ordre des traitements


# Instructions 1  Test de la condition
# instruction 2  Sortie si condition fausse
# ….  Exécution des instruction
# instruction N
 Les instruction ne pas forcément exécutées

 Exemple : reprenons le cas précédent (table de multiplication par 7)

nb = 7 # On garde la variable contenant le nombre dont on veut la table de multiplication

i = 0 # C'est notre variable compteur que nous allons incrémenter dans la boucle

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

40
1.10 Les boucles

 La boucle« for » (pour i allant de 0 à n faire)


 Syntaxe

for element in sequence:  element : variable créée par le « for »


# Instructions 1  Pas besoin de l’initialiser
# instruction 2 Elle prend successivement chacune des valeurs
# …. figurant dans la séquence parcourue
# instruction N
 séquence : tableau (ou liste) de valeurs

 Exemple 1 : cas d’une liste


tab = [1, 5, 10, 15, 20, 25]
somme = 0
for i in tab:
somme += i
print("la somme des éléments du tableau est : ", somme)

 Résultats

>>> la somme des éléments du tableau est : 76

41
1.10 Les boucles

 La boucle« for »
 Syntaxe

for element in sequence:  element : variable créée par le « for »


# Instructions 1  Pas besoin de l’initialiser
# instruction 2 Elle prend successivement chacune des valeurs
# …. figurant dans la séquence parcourue
# instruction N
 séquence : tableau (ou liste) de valeurs

 Exemple 2 : cas d’une chaine de caractère


chaine = "Bonjour les ZEROS"
for lettre in chaine:
print(lettre)

 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

 Exemple 1 : reprenons le cas précédent (table de multiplication par 7)

nb = 7 # On garde la variable contenant le nombre dont on veut la table de multiplication

i = 0 # C'est notre variable compteur que nous allons incrémenter dans la boucle

for i in range(1, 10): # on effectue une répétition de 1 à 9


print(i + 1, "*", nb, "=", (i + 1) * nb)

43
1.10 Les boucles

 Mot clé « break »


 Elle permet de stopper une boucle
 On utilise pour cela le mot clé « break »

 Exemple

tab = [1, 5, 10, 15, 20, 25]


somme = 0
for i in tab:
if i > 15 :
print("on stoppe la boucle")
break
somme += i
print("la somme des éléments du tableau inférieur à 15 est : ", somme)

 Résultat

>>> la somme des éléments du tableau est : 31

44
1.11 Les Listes

 Tableau dans lequel on peut mettre plusieurs valeurs


 Créer une liste en python

>>> ma_liste = []

 Ajouter une valeur à une liste


 Possibilité d’ajouter des valeurs lors de la création
>>> ma_liste = [1, 5, 10, 15, 20, 25]

 Possibilité de les ajouter après la création de la liste

>>> liste = []
>>> liste
[]
>>> [Link](1)
>>> liste
[1]
>>> [Link]("ok")
>>> liste
[1, 'ok']

 Remarque : il est possible de mélanger des valeurs de types différents


45
1.11 Les Listes

 Tableau dans lequel on peut mettre plusieurs valeurs


 Compter le nombre d’élément de liste
 Utilisation de la fonction « len »

>>> liste = [1,2,3,5,10]


>>> len (liste)
5

 Boucler sur une liste

>>> liste = ["a","d","m"]


>>> for lettre in liste:
print lettre
a
d
m

46
1.12 Exercices

 Exercice 1 : Ecrire un programme demandant à l’utilisateur de saisir son nom et


prénom et d’afficher « bonjour nom prénom »

 Exercice 2 : Ecrire un code demande à l’utilisateur de saisir deux entiers naturels


et affiche le maximum des deux

 Exercice 3: Ecrire un programme remplissant un tableau des 100 premiers entiers


naturels et affichant les nombre total de nombre pair d’une part et des nombre
impair d’autre part

 Exercice 4 : écrire un code permettant d’effectuer la somme des 100 premiers


nombres pairs

 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

 En programmation, on est amené à utiliser plusieurs fois des groupes d’instructions


dans un but précis
 Pour rendre le code plus propre et correct, on est amené à regrouper les instructions à
l’aide :
 des fonctions :
 permettent de regrouper plusieurs instructions dans un bloc qui sera appelé
grâce à un nom

 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

 Création d’une fonction en Python

def nom_del_la_fonction(param1, param2, paramN):


# Instructions 1
# instruction 2
# ….
# instruction N

 « def » : abréviation du mot « define » en anglais, prélude à toute construction


de fonction
 « nom_de_la_fonction » : le nom de la fonction
 Attention : N'utilisez pas un nom de variable déjà instanciée pour nommer
une fonction
 « param1, param2, … » : la liste des paramètres de la fonction
 Les deux points « : » clôturent la fonction
 Attention à ne pas l’oublier
50
2.2 Les fonctions

 Création d’une fonction en Python

def nom_del_la_fonction(param1, param2, paramN):


# Instructions 1
# instruction 2
# ….
# instruction N

 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

 Création d’une fonction en Python


 Exemple 1 : fonction permettant d’afficher la table de multiplication par 7

 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

 Création d’une fonction en Python


 Exemple 2 : Ecrire une fonction prenant en paramètre deux entiers naturels a
et b et affichant le maximum des deux

 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

 Valeurs par défaut des paramètres


 Il est possible d’initialiser certains paramètres lors de la création de la fonction

 Code python

def afficherMax(a, b = 10):


if a > b :
print( ”le maximum de ", a, ”et", b, ”est", a )
else
print( ”le maximum de ", a, ”et", b, ”est", b )

 Lors de l’appel de la fonction, il n’est pas nécessaire de préciser la valeur de


b

 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

 Exemple: écrire une fonction permettant de renvoyer le carré d’un nombre

def carre(valeur):
return valeur*valeur

 Console python

>>> a = carre(9)
>>> print(a)

81
>>>

 Remarque : il est possible de renvoyer plusieurs valeurs


 Ces valeurs doivent être séparer par une virgule
55
2.2 Les fonctions

 Portées des variables


 Une fonction est caractérisée par trois types de variables :
 Les variables locales : Elles sont définies à l’intérieur du sous-programme et ne sont
pas accessible en dehors du sous-programme. Leur portée est locale

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

 Portées des variables


 Une fonction est caractérisée par trois types de variables :
 Les variables globales : pour modifier la valeur d’une variable globale à l’intérieur
d’une fonction, il suffit d’utiliser le mot clé « global »

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

 Qu’est-ce qu’un module ?


 Un module est un fichier « script python » (d’extension « .py ») contenant un
ensemble de fonctions et variables et ayant des rapport entre elles

 Un module python fait généralement appel à des éléments qui sont présents
dans d'autres modules python

 Un programme python peut donc se composer d'un ou de plusieurs modules

 Il existe un grand nombre de modules disponibles sous Python notamment


math, cmath, random, turtle, matplotlib, numpy, pandas, etc…

 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

 Comment importer un module ?


 Pour importer un module, il suffit d’utiliser le mot clé « import » suivi du nom
du module

 Exemple : pour importer le module « math » dans un programme, il suffit de


faire :
import math

 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

 Comment importer un module ?


 Pour connaître les fonctions disponibles dans le module « math », il suffit
d’utiliser la fonction « help »

>>> 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

 Comment importer un module ?


 Il est possible de remplacer le nom d’un module par un autre nom lors de
l’importation

 Exemple

import math as mathematiques

[Link](25)

 « mathématiques » est désormais l’homonyme du module « math »

 Très utile pour « retrouver ses repaires » dans la liste interminable des
modules proposés par python

61
2.3 Les modules

 Comment importer un module ?


 Lors de l’appel d’un module donné, toutes les fonctions et variables définies
dans ce modules sont importés

 Conséquences : ralentissement de la performance du code

 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>
>>

 Pour importer toutes les fonctionnalités d’un module


>>> from math import *
62
2.4 Pas à pas vers la modularité

 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é

 Pour autant, l’interpréteur reste toujours utile

63
2.4 Pas à pas vers la modularité

 Ecrivons nos programmes dans des fichiers


 Reprenons l’exemple du programme permettant de déterminer si une année est
bissextile ou non

# 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 fournisse l'année qu'il désire tester
annee = int(annee) # Risque d'erreur si l'utilisateur n'a pas saisi
un nombre
if annee % 400 == 0 or (annee % 4 == 0 and annee % 100 != 0):
print("L'année saisie est bissextile.")
else:
print("L'année saisie n'est pas bissextile.")

 Ouvrir un éditeur de texte basique sous windows : notepad++, bloc note, …


 Insérer le code dans le fichier et l’enregistrer avec l’extension « py » (exemple:
« [Link] »)
 On parle de « script »
64
2.4 Pas à pas vers la modularité

 Ecrivons nos programmes dans des fichiers


 Pour exécuter le fichier, il existe 2 solutions :
 Utilisation de l’interpréteur python
 On saisit le nom du fichier et on exécute

>>>python [Link]
Entrer une année :
-

 Utilisation d’un IDE (spyder)


 Très pratique car offrant tout un environnement dédié à la
programmation

 C’est la solution qui sera utilisée pour le reste du cours

 Dans la même logique, on peut créer des modules

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

 C’est une notion fondamentale en Python

 En réalité, toutes les variables utilisées jusqu’ici sont des objets (idem pour les
fonctions)

 Garder à l’esprit qu’en python, tout est objet

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

 On s’attendrait à un code de la sorte :

>>> chaine = « N’TOH ! Humm…, J’adore les DONUTS!"


>>> mettre_en_minuscule(chaine)
‘n’toh!, humm …, j’adore les donuts'

 Toutefois jusqu’ici, nous ne savons pas comment gérer ce type de


problème

 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 notre exercice, l’objet « str » contient la méthode « lower() »


permettant de convertir les chaines de caractères en minuscule
68
3.2 Retour sur 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

def mettre_en_minuscule( chaine) :


return [Link]()

69
3.2 Retour sur les chaines de caractères

 Création d’une chaine de caractères


 2 méthodes possibles :
 Par initialisation directe :

ma_chaine = "N’TOH ! Humm…, J’adore les DONUTS!"

 Appel de la méthode « str() »

ma_chaine = str("N’TOH ! Humm…, J’adore les DONUTS!« )

70
3.2 Retour sur les chaines de caractères

 Mise en forme d’une chaine de caractères


 L’objet « str » dispose des méthodes suivantes:
 lower(): convertit la chaine en minuscule

 upper() : transforme une chaine en majuscule

 capitalize() : convertit le premier caractère de la chaine en majuscule

 strip() : retire des espaces en début et fin de la chaine de caractère

 center() : centre la chaine


 Exemple:
>>> minuscules = "une chaine en minuscules"
>>> [Link]() # Mettre en majuscules
'UNE CHAINE EN MINUSCULES'
>>> [Link]() # La première lettre en majuscule
'Une chaine en minuscules'
>>> espaces = " une chaine avec des espaces "
>>> [Link]() # On retire les espaces au début et à la fin de
la chaîne
'une chaine avec des espaces'
>>> titre = "introduction"
>>> [Link]().center(20)
' INT 71
3.2 Retour sur les chaines de caractères

 Formatage et affichage d’une chaine de caractères


 Affichage simple : utilisation de la fonction « print »
chaine = "Bonjour tout le monde !"
print(chaine)

print( "le message à afficher sur l’écran est : ", chaine)

 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.

 Le message contient des accolades entourant des nombres 0, 1, 2 ;

 La méthode « format » prend en paramètres les variables à afficher, dans un ordre


bien précis ;

 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

 Formatage et affichage d’une chaine de caractères


 Concaténation des chaines
 Elle consiste à regrouper les chaines de caractères en une seule une chaine
 On utilise pour cela le caractère « + »

 Exemple

>>> prenom = "Paul"


>>> message = "Bonjour"
>>> chaine_complete = message + prenom # On utilise le symbole '+‘ pour concaténer deux chaînes

... print(chaine_complete) # Résultat :


BonjourPaul

>>> # Pas encore parfait, il manque un espace


... # Qu'à cela ne tienne !
... chaine_complete = message + " " + prenom
>>> print(chaine_complete) # Résultat :
Bonjour Paul
>>>

73
3.2 Retour sur les chaines de caractères

 Formatage et affichage d’une chaine de caractères


 Concaténation des chaines
 Attention : la concaténation n’accepte que les chaines de caractère

 Exemple
>>> age = 21
>>> message = "J'ai " + age + " ans."

Traceback (most recent call last):


File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>>

 On réalise une concaténation de chaine et de nombre

 On constate qu’il ya une erreur de conversion

 Solution : tout convertir en chaine de caractère avec la méthode


« str »
>>> age = 21
>>> message = "J'ai " + str(age) + " ans."
>>> print(message)
J'ai 21 ans.
>>> 74
3.2 Retour sur les chaines de caractères

 Parcours et sélection de chaines


 Parcours par indice
 Une chaine de caractère est vu comme un tableau

 Pour accéder à une chaine, on utilise la méthode « [] »

 Exemple

>>> chaine = "Salut les ZER0S !"


>>> chaine[0] # Première lettre de la chaîne
'S'
>>> chaine[2] # Troisième lettre de la chaîne
'l'
>>> chaine[-1] # Dernière lettre de la chaîne
'!'
>>>

 Attention : les indices d’un tableau commence par « 0 »


 Pour connaître la taille d’une chaine , on utilise la méthode « len »
>>> chaine = "Salut"
>>> len(chaine)
5
>>>
75
3.2 Retour sur les chaines de caractères

 Parcours et sélection de chaines


 Sélection de chaînes
 En python, il est possible de sélectionner ou d’extraire une partie de la
chaine à partir des indices

ma_chaine[indice_debut : indice_fin]

 Exemple

>>> presentation = "salut"


>>> presentation[0:2] # On sélectionne les deux premières lettres
'sa'
>>> presentation[2:len(presentation)] # On sélectionne la chaîne sauf les deux premières lettres
'lut‘

>>> presentation[:2] # Du début jusqu'à la troisième lettre non comprise


'sa'
>>> presentation[2:] # De la troisième lettre (comprise) à la fin
'lut'
>>>

76
3.2 Retour sur les chaines de caractères

 Parcours et sélection de chaines


 Remarque
 Il est souvent utile de pouvoir désigner l’emplacement d’un caractère par
rapport à la fin de la chaîne. Pour ce faire, il suffit d’utiliser des indices
négatifs :
 « -1 » désignera le dernier caractère,
 « -2 » l’avant-dernier, etc.

 L’opérateur * permet de répéter une chaine de caractères

 Exemple

>>> nom = « Cédric"


>>> print(nom[-1], nom[-2], nom[-4], nom[-6])
cidC
>>> m = 'zut ! ' * 4 # répétition
zut ! zut ! zut ! zut !

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).

 2. Ecrire la fonction « rechercher » prenant en paramètre une chaine de


caractère « chaine » et un caractère « c ». Cette fonction recherche le caractère
« c » dans la « chaine » et renvoie l’indice du caractère. S’il ne le retrouve pas
alors l’indice à renvoyer est -1

 3. Ecrire une fonction « compterCar (chaine, c) » qui compte et renvoie le


nombre d’occurrences d’un caractère donné dans une chaîne. Ainsi :
 print(compteCar("ananas au jus","a")) devra afficher : 4
 print(compteCar("Gédéon est déjà là","é")) devra afficher : 3.

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

>>> ma_liste = list() # On crée une liste vide


>>>

 Liste initialisée

>>> ma_liste = [1, 2, 3, 4, 5] # Une liste avec cinq objets


>>> print(ma_liste)
[1, 2, 3, 4, 5]
>>>

>>> ma_liste = [1, 3.5, "une chaine", [] ]


>>>

79
3.3 Retour sur les listes

 Insertion d’objets dans une liste


 Méthode « append »
 Ajout d’élément en fin de liste
>>> ma_liste = [1, 2, 3]
>>> ma_liste.append(56) # On ajoute 56 à la fin de la liste
>>> ma_liste
[1, 2, 3, 56]
>>>

 Méthode « insert »
 Insertion d’un élément à une position donnée

>>> ma_liste = ['a', 'b', 'd', 'e']


>>> ma_liste.insert(2, 'c') # On insère 'c' à l'indice 2
>>> print(ma_liste)
['a', 'b', 'c', 'd', 'e']

80
3.3 Retour sur les listes

 Insertion d’objets dans une liste


 Concaténation de liste
 On peut agrandir une liste en la concaténant avec d’autres

 Les méthodes concernées : « extend() » et les opérateurs « + », « += »

>>> ma_liste1 = [3, 4, 5]


>>> ma_liste2 = [8, 9, 10]
>>> ma_liste1.extend(ma_liste2) # On insère ma_liste2 à la fin de ma_liste1
>>> print(ma_liste1)
[3, 4, 5, 8, 9, 10]
>>> ma_liste1 = [3, 4, 5]
>>> ma_liste1 + ma_liste2
[3, 4, 5, 8, 9, 10]
>>> ma_liste1 += ma_liste2 # Identique à extend
>>> print(ma_liste1)
[3, 4, 5, 8, 9, 10]
>>>

81
3.3 Retour sur les listes

 Suppression d’élément dans une liste


 Méthode « del »
 Permet de supprimer définitivement une variable donnée
>>> variable = 34
>>> variable
34
>>> del variable
>>> variable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'variable' is not defined
>>>

 En l’appliquant sur une liste, on a :


>>> ma_liste = [-5, -2, 1, 4, 7, 10]
>>> del ma_liste[0] # On supprime le premier élément de la liste
>>> ma_liste
[-2, 1, 4, 7, 10]
>>> del ma_liste[2] # On supprime le troisième élément de la liste
>>> ma_liste
[-2, 1, 7, 10]
>>>

 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

 Suppression d’élément dans une liste


 Méthode « remove(…) »
 Méthode appartenant à l’objet « Liste »

 Elle prend en paramètre non pas l’indice de l’élément à supprimer mais


plutôt l’élément lui-même

 Exemple

>>> ma_liste = [31, 32, 33, 34, 35]


>>> ma_liste.remove(32)
>>> ma_liste
[31, 33, 34, 35]
>>>

 Attention : La méthode « remove » ne retire que la première occurrence


de la valeur trouvée dans la liste !

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

 Ce sont des listes immuables, i.e. qu’on ne peut modifier

 La méthode « enumerate » renvoie en réalité des tuples

 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

 Nécessaire lorsqu’une fonction doit renvoyer plusieurs variables

 Certains modules de python contiennent des fonctions renvoyant des


tuples

 Exemple
 Code python Console python

def decomposer(entier, divise_par):


"""Cette fonction retourne la partie entière et le reste de >>> partie_entiere, reste = decomposer(20, 3)
entier / divise_par""" >>> partie_entiere
p_e = entier // divise_par 6>
reste = entier % divise_par >> reste
return p_e, reste 2>>>

88
3.3 Retour sur les listes

 Chaine de caractères   liste


 Pour convertir une chaine de caractère en une liste, on utilise la méthode
« split(…) »
 Cette fonction prend en paramètre un « délimiteur » de mots (ou groupe
de mots), les sépare et renvoie une liste

 Exemple
>>> ma_chaine = "Bonjour à tous"
>>> ma_chaine.split(" ")
['Bonjour', 'à', 'tous']
>>>

 Remarque : le paramètre par défaut de la fonction « split » est l’espace


(" ")

 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

 Liste et paramètres de fonction


 Les listes sont très utiles pour les fonctions dont le nombre de paramètres n’est
pas connu à l’avance
 Exemple : La fonction « print »

 Syntaxe

def fonction(*parametres):

 On place une étoile * devant le nom du paramètre qui accueillera la liste


des arguments.

90
3.3 Retour sur les listes

 Liste et paramètres de fonction


 Exemple

>>> def fonction_inconnue(*parametres):


... """Test d'une fonction pouvant être appelée avec un nombre variable de paramètres"""
...
... print("J'ai reçu : {}.".format(parametres))
...

>>> fonction_inconnue() # On appelle la fonction sans paramètre


J'ai reçu : ().
>>> fonction_inconnue(33)
J'ai reçu : (33,).
>>> fonction_inconnue('a', 'e', 'f')
J'ai reçu : ('a', 'e', 'f').
>>> var = 3.5
>>> fonction_inconnue(var, [4], "...")
J'ai reçu : (3.5, [4], '...').
>>>

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. »

 On souhaiterait compter le nombre d’apparition du mot des mots « regagné » « à »


et « ceao »

 Ecrire une fonction « occurrence » prenant en paramètre une chaine de caractères


« chaine » et une variable « mot » puis compte et retourne le nombre de fois
qu’apparaît le « mot » dans « chaine. Attention pour plus de fiabilité, il convient de
convertir les chaines de caractères en minuscule.

 A partir de cette fonction, déterminer le nombre d’occurrence des mots définis ci-
dessus.

92
3.4 Dictionnaires

 Rappel sur les listes


 Une liste est une structure de données pouvant contenir plusieurs type de
données différentes

 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é

 Il s’agit des dictionnaires

 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

 Chaque élément du dictionnaire est associé à une clé

 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

 Par exemple, un dictionnaire peut contenir un carnet d'adresses et on accède à


chaque contact en précisant son nom.

94
3.4 Dictionnaires

 Création d’un dictionnaire


 2 méthodes de création d’un dictionnaire
 En utilisant la méthode « dict() » ou simplement les accolades « {} »

>>> mon_dictionnaire = dict()


>>> type(mon_dictionnaire)
<class 'dict'>
>>> mon_dictionnaire
{}
>>> # Du coup, vous devriez trouver la deuxième manière de créer un dictionnaire vide
... mon_dictionnaire = {}
>>> mon_dictionnaire
{}
>>>

95
3.4 Dictionnaires

 Ajout d’un élément dans un dictionnaire

>>> 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 =

 Sinon, l'ancienne valeur à l'emplacement indiqué est remplacée par la


nouvelle :

96
3.4 Dictionnaires

 Ajout d’un élément dans un dictionnaire


 Exemple
>>> mon_dictionnaire = {}
>>> mon_dictionnaire[0] = "a"
>>> mon_dictionnaire[1] = "e"
>>> mon_dictionnaire[2] = "i"
>>> mon_dictionnaire[3] = "o"
>>> mon_dictionnaire[4] = "u"
>>> mon_dictionnaire[5] = "y"
>>> mon_dictionnaire
{0: 'a', 1: 'e', 2: 'i', 3: 'o', 4: 'u', 5: 'y'}
>>

 Remarques
 Un dictionnaire ne peut naturellement pas contenir deux clés identiques
 La seconde valeur écrase la première

 Il est possible d'avoir deux valeurs identiques dans le dictionnaire

 Les clés peuvent être de tout type (cependant le type doit être unique)

97
3.4 Dictionnaires

 Ajout d’un élément dans un dictionnaire


 Exemple
 On souhaite représenter un plateau d'échecs. Généralement, une case de
l’échequier est représentée par une lettre (de A à H) suivie d'un chiffre (de
1 à 8). La lettre définit la colonne et le chiffre définit la ligne. La valeur
contenu dans la case correspond au nom de la pièce

 Créer un dictionnaire permettant de gérer l’échiquier


98
3.4 Dictionnaires

 Ajout d’un élément dans un dictionnaire


 Exemple
 Solution

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

 Suppression des clés d’un dictionnaire


 Deux possiblités:
 Mot clé « del »

placard = {"chemise":3, "pantalon":6, "tee shirt":7}


del placard["chemise« ]

 Méthode de dictionnaire « pop »

>>> placard = {"chemise":3, "pantalon":6, "tee shirt":7}


>>> [Link]("chemise")
3
>>>

 Cette méthode supprime non seulement la clé mais aussi la valeur


associée. Elle retourne cette valeur.

100
3.4 Dictionnaires

 Parcours d’un dictionnaire


 le parcours d'un dictionnaire ne s'effectue pas tout à fait comme celui d'une
liste car il n’est pas une structure ordonnée

 On utilise généralement des méthodes de l’objet « dict »

 2 méthodes de parcours:
 Parcours des clés

 Parcours des valeurs

 Parcours des deux simultanément

101
3.4 Dictionnaires

 Parcours d’un dictionnaire


 Parcours des clés

>>> fruits = {"pommes":21, "melons":3, "poires":31}


>>> for cle in fruits:
... print(cle)
...
melons
poires
pommes
>>>

 En parcourant « simplement » un dictionnaire, on parcourt en réalité la


liste des clés contenues dans le dictionnaire

 Remarque :
 L’ordre d’apparition des clés ne suit pas l’ordre de l’initialisation

 Normal car un dictionnaire n’est pas une structure ordonnée

102
3.4 Dictionnaires

 Parcours d’un dictionnaire


 Parcours des clés
 La méthode « keys() » de l’objet « dict » permet d’obtenir les mêmes
résultats

>>> fruits = {"pommes":21, "melons":3, "poires":31}


>>> for cle in [Link]():
... print(cle)
...
melons
poires
pommes
>>>

103
3.4 Dictionnaires

 Parcours d’un dictionnaire


 Parcours des valeurs
 La méthode « values() » renvoie la liste des valeurs du dictionnaire

 Exemple

>>> fruits = {"pommes":21, "melons":3, "poires":31}


>>> for valeur in [Link]():
... print(valeur)
...
3
31
21
>>>

104
3.4 Dictionnaires

 Parcours d’un dictionnaire


 Parcours simultané des clés et valeurs
 On utilise la méthode « items() »
 Elle renvoie une liste, contenant les couples (clé : valeur), sous la
forme d'un tuple

 Exemple

>>> fruits = {"pommes":21, "melons":3, "poires":31}


>>> for cle, valeur in [Link]():
... print("La clé {} contient la valeur {}.".format(cle,
valeur))
...
La clé melons contient la valeur 3.
La clé poires contient la valeur 31.
La clé pommes contient la valeur 21.
>>>

105
3.5 Que faut-il retenir ?

 Les variables utilisées jusqu'ici sont en réalité des objets

 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

 Un dictionnaire est un structure non ordonnée pouvant contenir plusieurs objets de


types différents
 Chaque élément est associé à une clé

106
4. Gestion de fichiers

28/11/2020
107
4.1. Introduction

 Que savons-nous faire jusqu’à présent?


 Au moment de l’exécution
 Pour pouvoir utiliser une application (console), l’utilisateur doit saisir des
données au clavier
 Ces données sont traitées au moment de l’exécution et conservées en
mémoire

 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

 Comment sauvegarder les données?


 2 principales solutions existent:
 L’utilisation de fichiers (plus simple)
 L’utilisation de base de données (plus complexe)

 Ce cours concerne uniquement l’utilisation de fichiers

 Qu’est-ce qu’un fichier?


 Représentation du contenu d’un fragment de la mémoire, stocké sur un
périphérique et permettant au système d’exploitation d’utiliser un nom pour
désigner cette représentation
 Exemple de fichier : fichier texte, excel, …

 Notion d’entrée/sortie
 Mécanisme de sauvegarde (Machine  Fichiers) et d’importation de données
(Fichiers  Machine)

109
4.1. Introduction

 Notion de chemin absolu et relatif


 Dans l’arborescence d’un système, il existe deux possibilités d’accès à un fichier
 le chemin absolu (= chemin complet)
 Chemin partant de la racine du disque
 Exemple : "C:/Documents and Settings/login/Bureau/[Link]"

 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].

 Remarque : quand on décrit un chemin relatif, on utilise parfois le


symbole « … » désignant le répertoire parent

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:

fid = open(chemin_fichier, mode_ouverture)

 « fid » : variable permettant de manipuler le fichier (objet de type TextIoWrapper )


 « chemin_fichier » : chemin d’accès au fichier
 « mode_ouverture » : mode d’ouverture du fichier. Il est fourni sous forme de
chaine de caractère
Mode Description
d’ouverture
‘r ’ Ouverture en lecture (READ)

‘w’ Ouverture en écriture (WRITE). Le contenu du fichier est écrasé. Si le fichier


n'existe pas, il est créé.
‘a’ Ouverture en écriture en mode ajout. On écrit à la fin du fichier sans écraser
l'ancien contenu du fichier. Si le fichier n'existe pas, il est créé.
‘b’ Ouverture en mode binaire
111
4.2. Lecture et écriture dans un fichier

 Ouverture de fichier
 Exemple

# coding: utf-8
fichier = open("[Link]", "r")
print [Link]()
[Link]()

 Remarque : il est tout à fait possible de combiner certains mode.


 Exemple : Ouverture d’un fichier en lecture en mode binaire

# 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

 Lecture intégrale de fichier


 On utilise la méthode « read » de l’objet fichier et le mode d’ouverture de
fichier DOIT ETRE ‘r’

 Elle renvoie l’intégralité du fichier sous forme de chaine de caractères

 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

 Ecriture dans un fichier


 On utilise la méthode « write(…)»
 Elle ne prend en paramètre que des chaine de caractère à écrire dans le
fichier
 Elle renvoie le nombre total de caractères qui ont été écrit

 Mode d’ouverture de fichier : ‘a’, ‘w’

 Exemple:

>>> mon_fichier = open("[Link]", "w") # Argh j'ai tout écrasé !


>>> mon_fichier.write("Premier test d'écriture dans un fichier via Python")
50
>>> mon_fichier.close()
>>>

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 !!!

 Le mot clé « with »


 Il existe une autre syntaxe plus courte qui permet de s‘émanciper du problème
de fermeture du fichier: le mot clé « with »

with open("[Link]",, "r“)) as fichier :


print([Link]()()

116
MERCI

28/11/2020
117

Vous aimerez peut-être aussi