Cours Python L1 - Version Finale
Cours Python L1 - Version Finale
Introduction à l’algorithmique
et à la programmation sous
Python
Support de cours
1
Table des matières
1 Introduction 4
1.1 Langage machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Langages de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Découvrir Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.1 Installer et utiliser Python . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.2 Opérations arithmétiques . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.3 Instruction d’écriture (print) . . . . . . . . . . . . . . . . . . . . . 14
1.4.4 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Écrire des algorithmes et des programmes Python . . . . . . . . . . . . . 16
2 Les variables 18
2.1 Affectation simple, multiple et parallèle . . . . . . . . . . . . . . . . . . . 19
2.2 Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Le typage dynamique en Python . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Instruction de lecture (input()) . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Conversion des types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2
5 Fonctions 49
5.1 Définition d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2 Passage d’arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.3 Portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Bibliography 1
3
Chapitre 1
Introduction
Les machines de nos jours (robots, ordinateurs, appareils électroniques, etc.) sont
devenus très puissants. De plus, ils ont l’aire parfois très intelligents grâce aux applica-
tions qui les gèrent (leurs systèmes d’exploitation). Cependant, leur intelligence restera
toujours artificielle pour la simple raison qu’une machine est incapable de réfléchir.
Une machine ne fait qu’exécuter les commandes communiqués par les êtres humains
à travers des programmes informatique. Cela dit que derrière toute intelligence ar-
tificielle d’une machine, une véritable intelligence humaine maı̂tresse.
L’être humain est souvent capable de résoudre les problèmes d’une façon ”logique”
et d’appliquer la solution à une petite instance du problème. Cependant, lorsque la
taille de l’instance du problème devienne grosse, le cerveau humain se trouve incapable
d’appliquer la solution vu que les calculs deviennent complexes. Par exemple, on sait
tous comment calculer xy . La solution de ce problème est de multiplier x par lui-même
y fois. On est même tous capable de calculer 54 ou 28 dans nos têtes ou sur papier. En
revanche, c’est difficile (voir, impossible) pour nous de calculer 7025 ou 45078 ! De ce fait,
on enseigne à la machine la méthode de résolution de ce problème (calcul de xy ) puis
on profite de sa capacité de calcul dans la résolution des problèmes de grosses tailles
(comme 45078 ).
4
— Passage du courant électrique, on va le noter P .
— Absence du courant électrique, on va le noter A.
PPAAPPAPAAPAPAPAPAPAAAAAAAPPPPAPAPAPAPPPPPAPAAAAAAAPPPPAPAPA
AAPPPPAPPAAAPAPAAPAPAPAPPAPAAAAAAAAPPAPAPAPAAPAPAAAAAAAAPPAA
APPPAPPPPAPPPAAAPAPPAPAPPPPPAPAPAPAPAPPPPPPAAPPPPPAAPAAPPPAP
PPPPAAPAAPPPAPPPPPAPPAPAPPPAPPPPPAPPAPAPAPPPPPPAAPPPAPPPPPAP
...
Comme tout langage, le langage machine est aussi composé d’un ensemble de
mots, qui forment les commandes à exécuter. Une commande est correcte ou exécutable
si :
— Ses mots utilisent l’alphabet {P, A} du langage machine. Par exemple, les séquences
PPPA, AAPPAA, APPAPPAAAA peuvent êtres des mots dans le langages machines
(comme ils peuvent ne pas l’être).
— Chaque mot fasse partie du vocabulaire (ou, dictionnaire) du langage machine.
Autrement dit, il faudra que ce mot aie un sens interprétable par la machine.
Prenons un exemple de la langue française : le mot ”ghjgy” contient des lettres
françaises (il vérifie la première condition) mais il n’appartient pas à la langue
française vu qu’il ne fait pas partie du vocabulaire français.
— Il faudra que la commande elle même aie un sens pour la machine. Si on reprend
l’exemple de la langue française, une phrase comme ”sont fleur il chaise cela”
vérifie les deux premières conditions mais pas la troisième car ses mots sont
correctes mais la phrase elle même n’a pas de sens.
5
3. Une manière pour reconnaitre et exécuter les actions correspondantes aux signaux
électriques reçus.
Langage machine :
Représenté par le langage binaire {1, 0} où 0 exprime l’absence du courant et 1
exprime la présence du courant. C’est l’unique langage interprétable par la machine
d’une façon directe.
6
101010101011010101010010101011001011011101011111001111111111
101010110110010110111010111110011110110111010111110011111111
101010101011010101101100101101011011101111010101010110101101
001011011101011111001111011011101011111001011111111110000001
...
Avez-vous comprit quelque chose ? Moi non plus ! Dans le but de résoudre ce problème,
des gens ont pris la peine de réaliser des logiciels qui traduisent vos commandes, écrites
dans un langage ”plus naturel” que le langage machine, en un langage machine. Le lan-
gage ”plus naturel” que vous allez utiliser est bien un langage de programmation tel
que : Pascal, C++, Python, Java, Matlab, etc.
Les langages de programmation sont très proches du langage humain mais chacun de
ces langages a sa propre syntaxe qui doit être respectée. Par exemple, si on veut com-
mander à l’ordinateur d’afficher le message ”Bonjour” sur l’écran en utilisant le langage
de programmation Pascal. Cette demande s’exprime alors comme suite :
write (’Bonjour’);
print("Bonjour");
System.out.print("Bonjour");
Langage de programmation :
Un langage plutôt proche du langage humain que du langage machine. Utilisé pour
écrire des programmes informatique.
Programme :
Un ensemble de commandes écrites dans un langage de programmation, et qui
servent à résoudre un problème donné.
7
Il existe tellement de langage de programmation de différentes catégories et objectifs,
mais la classification la plus connue est celle qui les divise en deux catégories :
1.3 Algorithmique
Devenir un bon maı̂tre de la machine nécessite de passer par un processus d’ap-
prentissage de l’algorithmique. Dans cette phase, on apprend à rédiger les détails
des commandes à communiquer à la machine dans un langage plus ou moins naturel
(compréhensible par les humains). Le texte résultant est bien un algorithme. L’objectif
d’un algorithme est de structurer, formaliser et valider (logiquement) ces commandes
avant de passer à la programmation. Cela aide à minimiser les erreurs logiques dans la
solution proposée par le programmeur.
La procédure de résolution d’un problème peut être complexe comme elle peut se
restreindre à une simple tâche. Cependant, apprendre une simple procédure à un être
non intelligent est un véritable problème. Ceci dit d’aller dans les détails très profonds
de la procédure vu que l’apprenant (la machine) est un appareil d’exécution qui est in-
capable de réfléchir, raisonner, imaginer ou improviser afin qu’il remplisse les trous de la
procédure. D’ailleurs, l’un des objectifs principaux de la science d’algorithmique est de
signaler le niveau d’ignorance de la machine aux maitres (programmeurs). Dans ce but,
un ensemble de règles, conventions et structures ont été mis afin de cerner la description
d’un algorithme. Voici en une seule définition l’essentiel à retenir :
Algorithme :
Un ensemble d’étapes qui servent à résoudre un problème donné. La description
de l’algorithme utilise un langage naturel (français, anglais, etc.) en respectant un
ensemble de règles propres à l’algorithmique.
8
En tête de liste des règles d’algorithmique la règle suivante qui décrit la forme globale
qu’un algorithme devra respecter :
Algorithme <nomDeAlgorithme> :
<Instruction 1> ;
<Instruction 2> ;
<Instruction 3> ;
...
Fin
Notons que :
— Les mots en gras sont des mots clés ou bien des mots réservés. On n’a pas le
droit de modifier ou de supprimer un mot clé, ni de changer sa position. En contre
partie, ce qui est entre ”<>” est à définir par le concepteur de l’algorithme.
— Le mot clé Algorithme suivi du nom de l’algorithme constitue l’entête de l’al-
gorithme.
— Une instruction représente une étape élémentaire de l’algorithme et elle se ter-
mine obligatoirement par un point-virgule (”;”).
— Les mots clés Début et Fin marquent respectivement le début et la fin de l’algo-
rithme.
— Dans tous ce qui suit, on met entre ”< ... >” les éléments variables de l’algo-
rithme. Un élément variable est à définir par le concepteur de l’algorithme selon
ses besoins. Bien évidemment, les symboles ”<” et ”>” sont à enlever lorsqu’un
algorithme effectif est décrit. Regardons l’exemple de l’algorithme 1.3 qui décrit
en cinq étapes les tâche matinales d’un employé :
Algorithme queFaireLaMatinée :
Se réveiller à 8h du matin ;
Prendre une douche ;
Prendre un petit déjeuner ;
Consulter la météo sur Internet ;
Aller au travail ;
Fin
9
Recommandations pour le nom de l’algorithme :
1. Utiliser un nom qui reflète le contenu de l’algorithme.
2. Écrire en minuscule (sauf exception).
3. Si le nom de l’algorithme contient plus qu’un mot, se servir du majuscule
ou du blanc souligné ” ” en tant que séparateur (i.e. ne pas laisser d’espace
entre les mots).
4. Utiliser uniquement les caractères alphanumériques et le blanc souligné (pas
de symboles).
10
1.4 Découvrir Python
https://www.python.org/downloads/.
Une fois installé, deux raccourcis sont ajoutés à votre menu démarrer (sous Win-
dows). Le premier est appelé Python (command line) illustré dans la figure 1.1, et le
deuxième est bien IDLE (Python 3.5) illustré dans la figure 1.2. Pour faciliter les tâches,
veillez à créer un raccourci de l’application IDLE (Python GUI) sur votre bureau.
Dans la suite de ce chapitre nous allons tout d’abord essayer Python en mode inter-
actif en suivant ces étapes :
11
Figure 1.3 – L’application IDLE (python 3.5)
1 >>> 5+3
2 8
Les exemples suivants montrent les différents opérateurs arithmétiques qui existent.
1 >>> 10/3
2 3.3333333333333335
1 >>> 10//3
2 3
1 >>> 10%3
2 1
1 >>> 2.5*2
2 5.0
12
1 >>> 2**3
2 8
Les exemples suivants illustrent le concept de priorité des opérateurs qui consiste à
identifier l’ordre dans lequel les calculs sont effectués au sein d’une expression arithmétique
contenant plusieurs opérateurs.
1 >>> (5+2)*2
2 14
1 >>> 5+2*2
2 9
1 >>> 5+5%2
2 6
1 >>> 5*5%2
2 1
13
1.4.3 Instruction d’écriture (print)
Instruction d’écriture :
L’instruction d’écriture consiste à afficher un message sur l’écran de l’ordinateur.
Remarques :
— En python, le message à afficher peut être délimité soit par un simple, double
ou un triple quote.
— Dans certains cas -qui vont être détaillés plus loin dans ce cours- l’utilisation
du triple quote est obligatoire.
Observez les exemples suivants et remarquez l’effet de l’absence d’un quote lorsque
le message à afficher contient des opérations arithmétiques :
écrire (3+5) ;
14
1 >>> print (5-3, ’est égale à’, 1+1)
2 2 est égale à 2
Remarquez que dans certains exemples le message à afficher est délimité par un
simple quote, alors que d’autres il est délimité par un double ou un triple quote.
Le commentaire :
Un commentaire est un texte qui est ignoré par le compilateur (il n’est pas exécuté).
— Notation algorithmique −→ /∗ <le message à afficher> ∗/
— Notation Python −→ # <le message à afficher>
15
Séquence Description
\\ Backslash
\’ Guillemet simple (apostrophe)
\” Guillemet double
\n Saut de ligne
\t Tabulation horizontale
Toute ligne du code pourra être commentée afin de faciliter sa compréhension vis-
à-vis le lecteur du programme ou même son codeur. Ci-dessous deux exemples d’une
instruction commentée, en notation algorithmique puis en notation Python, suivie par
l’exécution correspondante en Python.
Algorithme bonjourTroisLangues :
écrire(”Bonjour”) ;
écrire(”Good morning”) ; //Ceci est un bonjour en anglais
écrire(”Buongiorno”) ; /∗ Ceci est un bonjour en italien ∗/
Fin
16
Rédiger un programme Python contenant plus qu’une ligne de code nécessite le pas-
sage du mode interactif vers le mode batch. Le mode batch signifie le traitement par
lot où un ensemble d’instructions sont compilées ensemble. Pour passer en mode batch
il faudra suivre les étapes suivantes :
1. Taper le code Python dans un fichier que l’on enregistre sous l’extension ”.py”.
2. On lance la compilation en appuyant sur la touche F5 du clavier.
3. Si le code contient des anomalies, un message d’erreur est affiché, sinon l’exécution
correspondante au code est affichée sur l’IDLE.
1 print (’Bonjour’)
2 print ("Good morning") # Ceci est un bonjour en anglais
3 print ("""Buongiorno""") # Ceci est un bonjour en italien
1 Bonjour
2 Good morning
3 Buongiorno
17
Chapitre 2
Les variables
Variable :
Une variable est une donnée qui est enregistrée dans un espace mémoire de la
machine. Une variable est caractérisée par :
1. Un nom alphanumérique (e.g. x, y, var, a1, etc.), représente ainsi le nom
de l’espace mémoire réservé pour la variable.
2. Un type (e.g. entier, réel, chaine de caractères, etc.).
3. Une valeur (e.g. 5, 12.33, ”abc”, etc.).
18
and del from none true as elif
global nonlocal try assert else if not
while break except import or with continue
class false in pass yield finally is
for lambda return raise def
L’affectation :
L’instruction d’affectation consiste à donner une valeur à une variable.
Prenons l’exemple illustré dans la figure 2.3 où nous affectons la valeur 5 à la variable
nommée x. En algorithmique c’est équivalent à écrire :
x ← 5;
En python :
1 >>> x=5
19
5
x
Figure 2.2 – Affectation de la valeur 5 à la variable x
Sous l’IDLE de Python, il suffit de taper le nom de la variable suivie par la touche
Entrée du clavier pour afficher son contenu (sa valeur).
1 >>> x
2 5
Lorsqu’une seule valeur est affectée à une seule variable, on parle alors de l’affectation
simple. Sous Python, il existe d’autres types d’affectation dont le rôle est de regrouper
plusieurs instructions d’affectation en une seule, il s’agit de :
1 >>> x,y,z=3,4,10
2 >>> x
3 3
4 >>> y
5 4
6 >>> z
7 10
2. l’affectation multiple : plusieurs variables recevront une même valeur dans une
même instruction.
20
1 >>> x=y=z=5
2 >>> x
3 5
4 >>> y
5 5
6 >>> z
7 5
En python, il existe 23 types de données dont la liste complète est présentée dans
l’annexe A. À ce stade, nous focalisons sur les types listés dans la table 2.2.
21
Algorithme descriptionJourActuel :
jour ← 2 ;
mois ← 8 ;
annee ← 2016 ;
temperature ← 31.7 ;
pluie ← False ;
phrase1 ← ”Aujourd’hui est le ” ;
phrase2 ← ”La température à ce moment est ” ;
écrire (phrase1,jour,”/”, mois, ”/”, annee) ;
écrire (phrase2, temperature) ;
écrire (”La pluie tombe =”, pluie) ;
Fin
1 jour=2
2 mois=8
3 annee=2016
4 temperature=31.7
5 pluie=False
6 phrase1="Aujourd’hui est le "
7 phrase2="La température à ce moment est "
8 print (phrase1,jour,"/", mois, "/", annee)
9 print (phrase2, temperature)
10 print ("La pluie tombe =", pluie)
22
2.3 Le typage dynamique en Python
La plupart des langage de programmation utilisent ce qu’on appelle un typage sta-
tique. Cela dit que :
— Pour toute variable utilisée dans le programme, il faudra d’abord déclarer son
type avant de lui affecter une valeur.
— Une fois le type de la variable est précisé, on n’est pas autorisé à le changer au
cours le programme (une variable préserve le même type dans tout le programme).
— Le type de la variable est automatiquement détecté une fois on lui affecte une
valeur (on n’a pas besoin de déclarer le type au préalable). De ce fait, Python est
capable d’afficher le type de la variable dont la valeur est connu. Cela se fait à
travers la fonction type() comme dans les exemples qui suivent :
1 >>> x=-2
2 >>> y=4.5
3 >>> b=True
4 >>> msg=’Ceci est un texte’
5 >>> type(x)
6 <class ’int’>
7 >>> type(y)
8 <class ’float’>
9 >>> type(x+y)
10 <class ’float’>
11 >>> type(b)
12 <class ’bool’>
13 >>> type(msg)
14 <class ’str’>
1 >>> x=5
2 >>> type(x)
3 <class ’int’>
4 >>> x=’Ceci est un texte’
5 >>> type(x)
6 <class ’str’>
23
2.4 Instruction de lecture (input())
Opération de lecture :
L’instruction de lecture consiste à faire passer une donnée au programme (au cours
de son exécution) à travers un appareil d’entrée tel que le clavier.
Remarques :
— En python, le message à afficher peut éventuellement être vide.
— En algorithmique, si on veut anticiper la lecture de la donnée par un mes-
sage d’information, on place une opération l’écriture écrire() juste avant
l’opération de lecture.
— L’utilisateur devra appuyer sur la touche Entrée une fois la saisie de la
donnée est terminée.
24
Algorithme saisieDescriptionJourActuel :
lire(jour) ;
lire(mois) ;
lire(annee) ;
lire(temperature) ;
lire(pluie) ;
phrase1 ← ”Aujourd’hui est le ” ;
phrase2 ← ”La température à ce moment est ” ;
écrire (phrase1, jour,”/”, mois, ”/”, annee) ;
écrire (phrase2, temperature) ;
écrire (”La pluie tombe =”, pluie) ;
Fin
1 jour=input()
2 mois=input()
3 annee=input()
4 temperature=input()
5 pluie=input()
6 phrase1="Aujourd’hui est le "
7 phrase2="La température à ce moment est "
8 print (phrase1, jour,"/", mois, "/", annee)
9 print (phrase2, temperature)
10 print ("La pluie tombe =", pluie)
25
3 Résultat d’exécution du programme 3
1 4
2 8
3 2016
4 35.6
5 False
6 Aujourd’hui est le 4 / 8 / 2016
7 La température à ce moment est 35.6
8 La pluie tombe = False
Dans l’exemple suivant, nous affectons à la variable x une valeur réelle, puis nous
changeons son types trois fois (lignes 4, 7 et 10). Après chaque conversion, nous ré-
affichons le contenu de x afin de vérifier les différents changement que la valeur de x a
subi.
26
11 >>> x
12 87
Notez que la conversion des types est souvent nécessaire après une opération de
lecture d’une donnée (input()). En effet, la donnée renvoyée suite à l’opération de
lecture est par défaut de type str. Si le programmeur souhaite qu’elle soit de type
différent alors il n’a qu’à convertir son type juste après la lecture. Observez l’exemple
suivant :
27
Chapitre 3
Comparaison simple :
C’est une évaluation d’une expression logique simple à uniquement deux opérandes
et un seul opérateur de comparaison. Bien évidemment, le résultat d’une
évaluation logique est soit ”vrai” ou ”faux”. Par exemple, ”2 > 7” est une ex-
pression logique simple telle que :
Sous l’IDLE de Python, il est possible d’avoir directement le résultat d’une compa-
raison juste en tapant l’expression et en appuyant sur la touche Entrée. Python renvoie
la valeur True si la comparaison est vraie et False si elle est fausse.
1 >>> 1>5
2 False
3 >>> 1<5
4 True
1 >>> 5>3<6
2 True
3 >>> 5==5<3
4 False
28
Une opérande peut s’agir d’une valeur comme il peut s’agir d’une variable. Observez
les deux exemples suivants :
Symbol Signification
== égal à
!= différent de
> supérieur à
≥ supérieur ou égal à
< inférieur à
≤ inférieur ou égal à
is représente le même objet
is not ne représente pas le même objet
Faites bien attention à ne pas confondre l’opérateur d’affectation ”=” qui donne
une valeur à une variable et l’opérateur de comparaison ”==” qui vérifie l’égalité
entre les valeurs de deux variables.
Voici quelques exemples de comparaisons simples qui ont été testés sous l’IDLE de
Python.
29
1 >>> x=5 #Ceci est une affectation
2 >>> x==6 #Ceci est une comparaison
3 False
4 >>> x==5
5 True
6 >>> x!=5
7 False
8 >>> x>1
9 True
10 >>> x<1
11 False
12 >>> y=x #On donne à la variable "y" la m^
eme valeur que "x"
13 >>> x is y
14 True
15 >>> z=10
16 >>> y is z
17 False
Vous pouvez également effectuer des comparaisons sur des chaı̂nes de caractères.
Lorsqu’on utilise les opérateurs <, >, ≤ et ≥ pour comparer les chaines de caractères,
l’ordre alphabétique est pris en compte. Dans la première ligne de l’exemple ci-dessous,
la position du caractère ”b” (2) dans l’alphabet est supérieure à la position du caractère
”a” (1), donc ”b” est considéré supérieur à ”a”. Cette règle est valable pour les caractères
spéciaux (dont on ne connait pas la position généralement) :
1 >>> "a">"b"
2 False
3 >>> "a"<"b"<"c"<"d"
4 True
5 >>> "+">"-"
6 False
7 >>> "&">"#"
8 True
30
En comparant des chaı̂nes à plus d’un caractère, Python procède comme suite :
— Il compare caractère par caractère, de la gauche vers la droite (le premier avec le
premier, le deuxième avec le deuxième, etc.).
— Tant qu’il trouve les même caractères dans les deux chaines, il les ignore et il
avance jusqu’à ce qu’il trouve le premier caractère différent.
— La comparaison est donc basée sur ce premier caractère différent.
Observez l’exemple suivant (ligne 1) où les deux chaines comparées partagent les trois
premiers caractère (”a”, ”b” et ”c”). Ces caractères seront donc ignorés et la comparaison
sera basée sur le quatrième caractère. Il se trouve que le quatrième caractère dans la
première chaine (”w”) est supérieur au quatrième caractère dans la deuxième chaine
(”d”), ce qui explique le résultat de cette comparaison.
1 >>> "abcw"<"abcd"
2 False
3 >>> "abc"<"abcd"
4 True
5 >>> "je"<"je suis"<"je suis étudiant"
6 True
Notez aussi que l’existence de la relation d’inclusion entre deux chaines comparées
signifie que la plus petite (en longueur) est inférieure à la plus grande en terme de
comparaison (lignes 3 à 6 de l’exemple en dessus).
Comparaison multiple :
C’est une évaluation logique qui combine les résultats de plusieurs évaluations
simples (comparaisons simples) à travers les opérateurs logiques (et, ou, non),
puis elle renvoie un seul résultat final. Par exemple, ”(2 > 7) et (7 > 10)” est une
expression logique à comparaisons multiples telle que :
31
Remarque : L’opérateur logique ”non” utilise une seule opérande. Il précède
une expression logique et renvoie l’opposition de son évaluation.
En Python, on utilise le mot réservé and pour l’opérateur ”et”, or pour l’opérateur
”ou”, et not pour l’opérateur ”non”. Respectez bien la casse ; and, or et not s’écrivent
en minuscule. Voici quelques exemples primaires :
Remarquez que la priorité est donnée aux parenthèses, sinon l’évaluation va de gauche
à droite. La table 3.2 rappelle le mode de fonctionnement des opérateurs logiques and et
or :
32
1 >>> True or False
2 True
3 >>> True or False and True
4 True
5 >>> not True
6 False
7 >>> not (True and False) or (False and False)
8 True
9 >>> not (True or False) and not True
10 False
Si...Alors
C’est un traitement qui consiste à exécuter une ou plusieurs instructions dans le cas
où une expression logique donnée (condition) est évaluée à ’vrai’. Si la condition
en question est fausse alors les instructions concernées ne sont pas exécutées.
Remarques :
— L’instruction if se termine par le caractère ” :”.
— Contrairement à la notation algorithmique, mettre l’expression à évaluer
entre parenthèses n’est pas obligatoire en Python.
— Les instructions à exécuter si la condition est frai doivent forcément être
indentées.
33
Si (1<5) Alors
écrire(”La première instruction a été exécutée”) ;
écrire(”La deuxième instruction a été exécutée”) ;
écrire(”La troisième instruction a été exécutée”) ;
Fin Si
1 if 1<5:
2 print("La première instruction a été exécutée")
3 print("La deuxième instruction a été exécutée")
4 print("La troisième instruction a été exécutée")
Notez que l’exécution de l’exemple ci-dessus ne retourne aucun résultat vu que l’ex-
pression logique est évaluée à faux.
34
Algorithme reconnaissanceOperateurArithmetique :
Fin
35
4 Résultats d’exécution du programme 4 (3 exécutions)
Si...Alors...Sinon
C’est un traitement qui consiste à exécuter une ou plusieurs instructions dans le
cas où une condition donnée (expression logique) est évaluée à ’vrai’. Si la condition
en question est fausse alors un ensemble d’instructions alternatif est exécuté.
Dans l’exemple ci-dessous, la condition ”2 > 5” n’est pas vérifiée (elle renvoie ”faux”).
Cela a fait que l’instruction en porté du ”Si” a été ignorée alors que l’instruction en
porté du ”Sinon” a été exécutée.
36
Si (2 > 5) Alors
écrire(”La première instruction est exécutée”) ;
Sinon
écrire(”La deuxième instruction est exécutée”) ;
Fin Si
1 if 2>5:
2 print("La première instruction est exécutée")
3 else:
4 print("La deuxième instruction est exécutée")
Notez que la structure ”Si...Alors...Sinon” peut être remplacée par deux struc-
tures Si...Alors séquentielles. L’exemple suivant est l’équivalent du précédent donc il
renvoie le même résultat d’exécution :
Si (2 > 5) Alors
écrire(”La première instruction est exécutée”) ;
Fin Si
Si ( ¬(2 > 5)) Alors
écrire(”La deuxième instruction est exécutée”) ;
Fin Si
1 if 2>5:
2 print("La première instruction est exécutée")
3 if not (2>5):
4 print("La deuxième instruction est exécutée")
37
3.5 Structures Si...Alors...Sinon imbriquées
38
x ← 3 ; //On affecte 3 à x
Si (x==1) Alors
La variable x est égale à un”) ;
Sinon
Si (x==2) Alors
La variable x est égale à deux”) ;
Sinon
Si (x==3) Alors
La variable x est égale à trois”) ;
Sinon
Si (x==4) Alors
écrire(”La variable x est égale à quatre”) ;
Sinon
écrire(”La variable x est égale à cinq.”) ;
Fin Si
Fin Si
Fin Si
Fin Si
1 x=3
2 if x==1:
3 print("La variable x est égale à un")
4 elif x==2:
5 print("La variable x est égale à deux")
6 elif x==3:
7 print("La variable x est égale à trois")
8 elif x==4:
9 print("La variable x est égale à quatre")
10 else:
11 print("La variable x est égale à cinq")
39
Algorithme reconnaissanceOperateurArithmetique version2 :
40
Chapitre 4
Fonction range :
C’est une fonction prédéfinie en Python et qui renvoie un intervalle d’entiers en
respectant l’une des syntaxes suivantes :
41
4.2 Boucle ”Pour”
Boucle Pour :
C’est une structure qui permet de répéter l’exécution d’un bloc d’instructions (ap-
pelé, le corps de la boucle) un certain nombre de fois, fixé à l’entête de la boucle.
La boucle est quittée une fois le nombre d’itérations atteint sa limite.
Remarques :
— En algorithmique, ”début” et ”fin” à l’entête de la boucle Pour doivent
être des valeurs entière.
— En python, ”intervalle” peut prendre différentes formes, allant d’un simple
intervalle de nombres entiers à une chaine de caractères.
— En python, un intervalle d’entiers est défini en utilisant la fonction range
préalablement définie dans la section 4.1.
— Bien évidemment, les instructions appartenant au corps de la boucle doivent
être indentées.
Nous commençons par un exemple simple où le corps de la boucle pour contient une
seule instruction :
Pour i de 0 à 4 faire
écrire(”La boucle est dans l’indice”,i) ;
Fin Pour
42
1 la boucle est dans l’indice 0
2 la boucle est dans l’indice 1
3 la boucle est dans l’indice 2
4 la boucle est dans l’indice 3
5 la boucle est dans l’indice 4
Notez que la fonction range peut tout simplement être remplacée par un intervalle
équivalent, comme dans l’exemple en bas qui renvoie exactement le même résultat que
le précédent (range(5)) :
1 for i in [0,1,2,3,4]:
2 print("La boucle est dans l’indice",i)
1 for i in "abcde":
2 print("La boucle est dans l’indice",i)
x←1 ;
Pour i de 0 à 4 faire
x←x*2 ;
écrire(”la valeur actuelle de x est”, x) ;
Fin Pour
43
1 x=1
2 for i in range(5):
3 x=x*2
4 print("la valeur actuelle de x est", x)
Remarque :
— Indenter le bloc d’instructions à la portée de ”while” est nécessaire.
— Mettre la condition entre parenthèses n’est pas obligatoire en Python.
44
Afin que la boucle ”Tant Que” fonctionne correctement, assurez vous toujours
d’incorporer un mécanisme d’arrêt dans son corps. Autrement dit, il faudra garantir
l’arrivée d’un moment où la condition à la portée de cette boucle ne sera plus valide.
Voici un exemple d’une boucle ”Tant Que” où la variable i est initialisée à 0 puis on
augmente sa valeur à chaque itération. On arrête la boucle une fois i atteint la valeur 5
(On répète l’exécution du corps de la boucle tant que i < 5).
i←0 ;
Tant que (i<5) faire
écrire(”La valeur actuelle de i est”, i) ;
i←i+1 ;
Fait
1 i=0
2 while i<5:
3 print("La valeur actuelle de i est", i)
4 i=i+1
45
Notez que vous pouvez toujours interrompre l’exécution d’un script Python à l’aide
de la combinaison de touches Ctrl+C. Ceci vous sera utile dans le cas du lancement d’une
boucle infinie.
Dans ce qui suit, nous allons reprendre l’algorithme 5 vu au chapitre 3 et qui effectue
la reconnaissance d’un opérateur arithmétique. Le problème dans cet algorithme est qu’il
reconnaisse un seul opérateur à chaque lancement d’exécution. Nous allons le modifier
afin qu’il continue son exécution tant que l’utilisateur le voudra.
reponseUser←”o” ;
Tant que (reponseUser==”o” OU reponseUser==”O”) faire
écrire(”Veuillez entrer une opération arithmétique (+,-,/,*) : ”) ;
lire(operateur) ;
Si (operation==”+”) Alors
écrire(”Une opération d’addition”) ;
Sinon
Si (operation==”-”) Alors
écrire(”Une opération de soustraction”) ;
Sinon
Si (operation==”/”) Alors
écrire(”Une opération de division”) ;
Sinon
Si (operation==”*”) Alors
écrire(”Une opération de multiplication”) ;
Sinon
écrire(”Erreur ! Ceci ce n’est pas une opération
arithmétique.”) ;
Fin Si
Fin Si
Fin Si
Fin Si
écrire(”Voulez-vous continuez l’exécution ? O/N ”) ;
lire(reponseUser) ;
Fait
Fin
46
1 reponseUser="o"
2 while(reponseUser=="o" or reponseUser=="O"):
3 operation=input("Veuillez entrer une opération arithmétique
֒→ (+,-,/,*) : ")
4 if(operation=="+"):
5 print("Une opération d’addition")
6 elif(operation=="-"):
7 print("Une opération de soustraction")
8 elif(operation=="/"):
9 print("Une opération de division")
10 elif(operation=="*"):
11 print("Une opération de multiplication")
12 else:
13 print("Erreur! Ceci ce n’est pas une opération
֒→ arithmétique.")
14 reponseUser=input("\nVoulez-vous continuez l’exécution? O/N ")
Remarquez que nous avons utilisé une variable reponseUser afin de prendre en
compte la réponse de l’utilisateur s’il souhaite ou non continuer l’exécution du pro-
gramme. Nous l’avons initialisé à ”o” (pour dire ”oui”) pour qu’on puisse exécuter ce
programme au moins une fois. Après cette première exécution, si l’utilisateur répond
par ”o” ou bien ”O” à notre question alors on continue l’exécution, sinon on arrête pour
toute autre réponse différente de ”o” ou ”O”.
47
4.4 Instructions ”break” et ”continue”
1 for i in range(5):
2 if i==2:
3 break
4 print(i)
1 0
2 1
Dans l’exemple ci-dessous, l’instruction ”continue” a fait que la valeur 2 n’a pas été
imprimée parce que l’instruction d’affichage correspondante à l’itération où i = 2 a été
sautée.0 1 3 4
1 for i in range(5):
2 if i==2:
3 continue
4 print(i)
1 0
2 1
3 3
4 4
48
Chapitre 5
Fonctions
Vous connaissez déjà certaines fonctions Python, par exemple len(), range(), inverse(),
etc. Pour un utilisateur, une fonction est une boite noire :
— À laquelle on passe une (ou zero ou plusieurs) valeur(s) entre parenthèses. Ces
valeurs sont appelées arguments.
— Qui effectue une action. Par exemple sort() trie une liste.
— Et qui renvoie éventuellement un résultat. Par exemple si on appelle la fonction
range() en lui passant la valeur 5 (range(5)), celle ci vous renvoie une liste de
nombres entiers de 0 à 4 ([0, 1, 2, 3, 4]).
Au contraire, aux yeux d’un programmeur une fonction est une portion de code ef-
fectuant une action bien particulière. Avant de démarrer sur la syntaxe, revenons sur
cette notion de ”boı̂te noire” :
— Une fonction effectue une tâche. Pour cela, elle reçoit éventuellement des argu-
ments et renvoie éventuellement un résultat. Ce qui se passe en son sein n’intéresse
pas directement l’utilisateur. Par exemple, il est inutile de savoir comment la fonc-
tion math.sqrt() calcule la racine carrée, on a juste besoin de savoir qu’il faut
lui passer en argument un nombre x et qu’elle renvoie la racine carrée de x. Ce
qui se passe au sein de la fonction ne regarde que le programmeur (c’est-à-dire
vous dans ce chapitre).
— Chaque fonction effectue en général une tâche unique et précise. Si cela se com-
plique, il est plus judicieux d’écrire plusieurs fonctions (qui peuvent éventuellement
s’appeler les unes les autres). Cette modularité améliore la qualité générale et la
49
lisibilité du code. Vous verrez qu’en Python, les fonctions présentent une grande
flexibilité.
Fonction :
Une fonction est un fragment de programme qui effectue une tâche particulière.
Ce fragment reçoit éventuellement des paramètres (ou, arguments), et renvoie
éventuellement un résultat.
Notation algorithmique :
Notation Python :
Dans l’exemple ci-dessous, nous définissons une fonction simple calculons le carré
d’un entier quelconque passé en paramètre :
50
Fonction carre(x : entier) : entier
Retourner x*x ;
Fin
1 def carre(x):
2 return x*x
1 >>> carre(5)
2 25
3 >>> carre(2)
4 4
5 >>> carre(-10)
6 100
Dans l’exemple précédent, nous avons passé un argument à la fonction ”carre()” qui
nous a retourné une valeur que nous avons récupéré à travers le mot clé ”Retourner”.
Le résultat d’une fonction contenant le mot clé ”Retourner” peut être enregistrée dans
une variable. Observez l’exemple suivant où la variable y est utilisée pour enregistrer le
résultat de la fonction carre(6) :
1 >>> y=carre(6)
2 >>> y
3 36
Notez qu’une fonction ne prend pas forcément un argument et ne renvoie pas forcément
une valeur, par exemple :
4 >>> helloFR()
5 bonjour
51
Dans ce cas la fonction ”helloFR()” se contente d’imprimer la chaı̂ne de caractères
”Bonjour” à l’écran. Elle ne prend aucun argument et ne renvoie aucun résultat. Par
conséquent, cela n’a pas de sens de vouloir récupérer dans une variable le résultat ren-
voyé par une telle fonction . Si on essaie tout de même, Python affecte la valeur ”None”
qui signifie ”rien” en anglais :
1 >>> y=helloFR()
2 bonjour
3 >>> print(y)
4 None
Un autre gros avantage de Python est que ses fonctions sont capables de renvoyer
plusieurs valeurs à la fois, comme dans cette fraction de code :
52
1 >>> def carre_cube(x):
2 return x*x, x*x*x
3
4 >>> carre_cube(3)
5 (9, 27)
Vous voyez qu’en réalité, Python renvoie un objet séquentiel qui peut par conséquent
contenir plusieurs valeurs. Dans notre exemple, Python renvoie un objet ”tuple” car on
a utilisé une syntaxe de ce type. Notre fonction pourrait tout autant renvoyer une liste :
4 >>> carre_cube(5)
5 [25, 125]
4 >>> func()
5 1
6 >>> func(7)
7 7
Notez que si on passe plusieurs arguments à une fonction, le ou les arguments facul-
tatifs doivent être situés après les arguments obligatoires. Observez l’exemple suivant :
4 >>> func()
5 Traceback (most recent call last):
6 File "<pyshell#26>", line 1, in <module>
7 func()
8 TypeError: func() missing 2 required positional arguments: ’x’ and ’y’
53
9 >>> func(5,7)
10 (5, 7, 1)
11 >>> func(2)
12 Traceback (most recent call last):
13 File "<pyshell#28>", line 1, in <module>
14 func(2)
15 TypeError: func() missing 1 required positional argument: ’y’
5 >>> mafonction()
6 la valeur de x est 2
7 >>> print(x)
8 Traceback (most recent call last):
9 File "<pyshell#5>", line 1, in <module>
10 print(x)
11 NameError: name ’x’ is not defined
54
Lorsque Python exécute le code de la fonction mafonction, il connait le contenu de
la variable x. Par contre, de retour dans le module principal (dans notre cas, il s’agit
de l’interpréteur Python), il ne la connaı̂t plus d’où le message d’erreur. De même,
une variable passée en argument est considérée comme locale lorsqu’on arrive dans la
fonction :
4 >>> mafonction(3)
5 la valeur de x est 3
6 >>> print (x)
7 Traceback (most recent call last):
8 File "<pyshell#10>", line 1, in <module>
9 print (x)
10 NameError: name ’x’ is not defined
Voici un exemple où la variable x est déclarée dans le module principal (L’IDLE),
d’où elle est visible dans tout le module.
4 >>> x=4
5 >>> mafonction()
6 la valeur de x est 4
Toutefois, Python ne permet pas la modification d’une variable globale dans une
fonction :
4 >>> x=2
5 >>> mafonction()
6 Traceback (most recent call last):
7 File "<pyshell#11>", line 1, in <module>
8 mafonction()
55
9 File "<pyshell#9>", line 2, in mafonction
10 x=x+1
11 UnboundLocalError: local variable ’x’ referenced before assignment
L’erreur renvoyée montre que Python pense que x est une variable locale qui n’a pas
été encore assignée. Si on veut vraiment modifier la variable x, il faut utiliser le mot-clé
global :
5 >>> x=4
6 >>> mafonction()
7 >>> x
8 5
Dans ce dernier cas, le mot-clé global a forcé la variable x a être globale plutôt que
locale au sein de la fonction.
56
Chapitre 6
6.1 Listes
6.1.1 Définition de listes
Liste :
Une liste est une structure de données qui contient une série de valeurs. Python au-
torise la construction de liste contenant des valeurs de type différent (par exemple
entier et chaı̂ne de caractères), ce qui leur confère une grande flexibilité.
— Notation algorithmique −→
— Notation Python −→
Observez les listes suivantes où la première est une liste d’entiers, la deuxième est
une liste de chaines de caractères alors que la troisième est une liste mixte :
1 >>> nombres=[67,8,56,33]
2 >>> chaines=[’je’,"étudiant",’suis’]
3 >>> mixte=[4,’h’,10.5,"étudiant"]
Lorsque l’on affiche une liste, Python la restitue telle qu’elle a été saisie :
57
1 >>> nombres
2 [67, 8, 56, 33]
3 >>> chaines
4 [’je’, ’étudiant’, ’suis’]
5 >>> mixte
6 [4, ’h’, 10.5, ’étudiant’]
1 >>> nombres=[67,8,56,33]
2 >>> chaines=[’je’,"étudiant",’suis’]
3 >>> mixte=[4,’h’,10.5,"étudiant"]
4 >>> nombres[0]
5 67
6 >>> chaines[1]
7 ’étudiant’
8 >>> mixte[3]
9 ’étudiant’
10 >>> nombres[0]+nombres[2]
11 123
La liste peut également être indexée avec des nombres négatifs selon le modèle sui-
vant :
Liste x1 x2 x3 x4
Indice positif 0 1 2 3
Indice négatif -4 -3 -2 -1
Les indices négatifs reviennent à compter à partir de la fin. Leur principal avantage
est que vous pouvez appeler le dernier élément d’une liste à l’aide de l’indice -1 sans
pour autant connaı̂tre la longueur de la liste.
58
1 >>> nombres[-2]
2 56
3 >>> chaines[-1]
4 ’suis’
5 >>> mixte[-4]
6 4
Un autre avantage des listes est la possibilité de sélectionner une partie en utilisant
le modèle [m : n + 1] pour récupérer tous les éléments entre l’indice m (inclus) et l’indice
n (inclus). On dit alors qu’on récupère une tranche de la liste, par exemple :
1 >>> nombres[1:3]
2 [8, 56]
3 >>> nombres[0:-1]
4 [67, 8, 56]
5 >>> nombres[0:-3]
6 [67]
7 >>> nombres[-3:0]
8 []
9 >>> nombres[0:-1]
10 [67, 8, 56]
11 >>> nombres[1:-1]
12 [8, 56]
13 >>> nombres[:]
14 [67, 8, 56, 33]
15 >>> nombres[:2]
16 [67, 8]
17 >>> nombres[1:]
18 [8, 56, 33]
Notez que, dans certaines versions de Python, on peut aussi préciser le pas en ajoutant
un ”:” supplémentaire et en indiquant le pas par un entier. Donc il faut suivre la syntaxe
list[début:fin:pas].
59
1 >>> nombres[0:-1:2]
2 [67, 56]
Observez l’exemple suivant où nous utilisons la fonction range() vue au chapitre 4
afin de créer une listes d’entiers de manière simple et rapide :
1 >>> list1=range(20)
2 range(0, 20)
3 >>> list1[7]
4 7
5 >>> list1[19]
6 19
1 >>> module1=[’Dimanche’,’Java’]
2 >>> module2=[’Lundi’,’BD’]
3 >>> module3=[’Mardi’,’Python’]
4 >>> programme=[module1,module2,module3]
5 >>> programme
6 [[’Dimanche’, ’Java’], [’Lundi’, ’BD’], [’Mardi’, ’Python’]]
Dans l’exemple ci-dessus, chaque sous-liste contient un jour de la semaine plus le nom
d’un module enseigné. Pour accéder à une sous-liste on utilise un indexage simple et
pour accéder à un élément de la sous-liste, on utilise un indexage double :
1 >>> programme[0]
2 [’Dimanche’, ’Java’]
3 >>> programme[0][0]
4 ’Dimanche’
5 >>> programme[1][0]
6 ’Lundi’
7 >>> programme[1][0]
8 ’Lundi’
9 >>> programme[0][1]
10 ’Java’
60
6.1.4 Manipulation des listes
Longueur d’une liste La fonction ”len()” vous permet de connaı̂tre la longueur
d’une liste. Voici un exemple d’utilisation :
1 >>> l=[1,2,3,4]
2 >>> len(l)
3 4
Test d’appartenance Les mots clés Python ”in” et ”not in” permettent de tester
respectivement l’appartenance ou non d’un élément à une liste. Python vous affiche
”true” si le test est positif et ”false” sinon.
1 >>> l=[1,2,3,4]
2 >>> 2 in l
3 True
4 >>> 2 not in l
5 False
6 >>> 8 in l
7 False
Fonctions sur les listes En Python, un ensemble de fonctions ont été définies afin
de faciliter l’usage des listes. Ci-dessous la listes des fonctions les plus importantes avec
un exemple d’usage pour chacune d’elles :
1 >>> l=[1,2,3,4]
2 >>> l.append(5)
3 >>> l
4 [1, 2, 3, 4, 5]
1 >>> l=l+[6]
2 >>> l
3 [1, 2, 3, 4, 5, 6]
61
2. La fonction insert() : pour insérer un object dans une liste avec un indice
déterminé.
1 >>> l.insert(3,7)
2 >>> l
3 [1, 2, 3, 7, 4, 5, 6]
3. La fonction del() : pour supprimer un élément d’une liste à partir d’un indice.
1 >>> del(l[1])
2 >>> l
3 [1, 3, 7, 4, 5, 6]
1 >>> l.remove(7)
2 >>> l
3 [1, 3, 4, 5, 6]
1 >>> l=[7,5,2,9]
2 >>> l.sort()
3 >>> l
4 [2, 5, 7, 9]
1 >>> l.reverse()
2 >>> l
3 [7, 5, 4, 3, 1]
62
7. La fonction count() : pour compter le nombre d’occurrences de la valeur passée
en argument, dans la liste.
1 >>> l.count(7)
2 1
3 >>> l.count(6)
4 0
1 >>> list1=[1,2,3]
2 >>> list2=list1
3 >>> list1[1]=4
4 >>> list1
5 [1, 4, 3]
6 >>> list2
7 [1, 4, 3]
1. Utilisation de la syntaxe :
1 >>> list1=[1,2,3]
2 >>> list2=list1[:]
3 >>> list1[1]=4
4 >>> list1
5 [1, 4, 3]
6 >>> list2
7 [1, 2, 3]
63
1 >>> list1=[1,2,3]
2 >>> list2=list(list1)
3 >>> list1[1]=4
4 >>> list1
5 [1, 4, 3]
6 >>> list2
7 [1, 2, 3]
Attention, les deux techniques précédentes ne fonctionnent que pour les listes à une
dimension, autrement dit les listes qui ne contiennent pas elles-mêmes d’autres listes.
1 >>> list1=[[1,2],[3,4]]
2 >>> list2=list(list1)
3 >>> list1[1][1]=-5
4 >>> list1
5 [[1, 2], [3, -5]]
6 >>> list2
7 [[1, 2], [3, -5]]
La méthode de copie qui marche à tous les coups consiste à appeler la fonction
”deepcopy()” du module ”copy”.
64
1 >>> def mafonction():
2 liste[1]=5
3
4 >>> liste=[1,2,3]
5 >>> mafonction()
6 >>> liste
7 [1, 5, 3]
De même que si vous passez une liste en argument, elle est tout autant modifiable
au sein de la fonction :
4 >>> y=[1,2,3]
5 >>> mafonction(y)
6 >>> y
7 [1, 5, 3]
Si vous voulez éviter ce problème, utilisez des tuples, Python renverra une erreur
puisque ces derniers sont non modifiables ! Une autre solution pour éviter la modification
d’une liste lorsqu’elle est passée en tant qu’un argument, est de la passer explicitement
(comme nous l’avons fait pour l’affectation) afin qu’elle reste intacte dans le programme
principal.
4 >>> y=[1,2,3]
5 >>> mafonction(y[:])
6 >>> y
7 [1, 2, 3]
8 >>> mafonction(list(y))
9 >>> y
10 [1, 2, 3]
Dans ces deux derniers exemples, une copie de y est créée à la volée lorsqu’on appelle
la fonction, ainsi la liste y du module principal reste intacte.
65
6.2 Les dictionnaires
Les dictionnaires se révèlent très pratiques lorsque vous devez manipuler des struc-
tures complexes à décrire et que les listes présentent leurs limites.
Dictionnaire :
Les dictionnaires sont des collections non ordonnées d’objets, c-à-d qu’il n’y a pas
de notion d’ordre (i. e. pas d’indice). On accède aux valeurs d’un dictionnaire par
des clés.
En premier lieu, un dictionnaire vide doit être définit en utilisant les symboles
{}, ou à travers le mot clé dict() :
Sinon, on peut à la fois définir un dictionnaire et remplir les valeurs de ses clés
en respectant la syntaxe suivante :
1 >>> dic=dict()
2 >>> dic[’nom’]=’Dib’
3 >>> dic[’prenom’]=’Mohammed’
4 >>> dic[’age’]=22
Pour récupérer la valeur d’une clé donnée, il suffit d’utiliser une syntaxe du style
dictionnaire[’clé’].
66
1 >>> dic[’age’]
2 22
3 >>> dic[’nom’]
4 ’Dib’
1 >>> dic1={’nom’:’Dib’,’prénom’:’Mohammed’,’age’:22}
2 >>> dic2={’nom’:’Salmi’,’prénom’:’Yacer’,’age’:24}
3 >>> dic3={’nom’:’Brahami’,’prénom’:’amina’,’age’:30}
4 >>> dic=[dic1,dic2,dic3]
5 >>> dic
6 [{’age’: 22, ’nom’: ’Dib’, ’prénom’: ’Mohammed’}, {’age’: 24, ’nom’:
֒→ ’Salmi’, ’prénom’: ’Yacer’}, {’age’: 30, ’nom’: ’Brahami’,
֒→ ’prénom’: ’amina’}]
7 >>> print(dic1 ,’\n’, dic2 ,’\n’, dic3)
8 {’age’: 22, ’nom’: ’Dib’, ’prénom’: ’Mohammed’}
9 {’age’: 24, ’nom’: ’Salmi’, ’prénom’: ’Yacer’}
10 {’age’: 30, ’nom’: ’Brahami’, ’prénom’: ’amina’}
67
6.3 Les tuples
Dictionnaire :
Les tuples correspondent aux listes à la différence qu’ils sont non modifiables. On a
vu à la section précédente que les listes pouvaient être modifiées par des références ;
les tuples vous permettent de vous affranchir de ce problème. Pratiquement, ils uti-
lisent les parenthèses au lieu des crochets :
Ci-dessous un exemple où nous définissons un tuple puis nous affichons certains de
ses éléments :
1 >>> tuple1=(1,2,3,4)
2 >>> tuple1[2]
3 3
4 >>> tuple1[0:2]
5 (1, 2)
L’affectation et l’indexage fonctionne comme avec les listes, mais si l’on essaie de
modifier un des éléments du tuple, Python renvoie un message d’erreur (regardez la
ligne 15 du code ci-dessus).
1 >>> tuple1=(1,2,3,4)
2 >>> tuple1[4]=5
3 Traceback (most recent call last):
4 File "<pyshell#4>", line 1, in <module>
5 tuple1[4]=5
6 TypeError: ’tuple’ object does not support item assignment
Donc, si vous voulez ajouter un élément(ou le modifier), vous devez créer un autre
tuple :
1 >>> tuple1=tuple1+(5,)
2 >>> tuple1
3 (1, 2, 3, 4, 5)
68
Enfin, on peut utiliser la fonction ”tuple()” qui fonctionne exactement comme la
fonction ”range()”, c-à-d qu’elle prend en argument un objet séquentiel et renvoie le
tuple correspondant :
1 >>> tuple(’hjhhlkbn’)
2 (’h’, ’j’, ’h’, ’h’, ’l’, ’k’, ’b’, ’n’)
3 >>> tuple(range(10))
4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
69
Bibliographie
1
Annexe A
2
Code du Description
type
int Entier compris entre -2 147 483 648 et 2 147 483 647 (codage sur 32 bits
soit 4 octets)
long Entier compris entre −∞ et -2 147 483 647 ou entre 2 147 483 648 et +∞
float Valeur spécifiée avec un point dans le programme (exemple : a = 2.0)
permettant une approximation de nombre réel
complex Nombre complexe
str Chaı̂ne de caractères
unicode Chaı̂ne de caractères encodés selon la norme Unicode
basestring Chaı̂ne de caractères str + unicode
tuple Tuple de forme (1,2,3,”je suis un tuple”,5,3.14159)
list Liste de forme [1,2,3,”je suis une liste”,’...’]
xrange Liste dont les numéros peuvent être générés automatiquement
dict Dictionnaire de forme {’Œuf’ : 1, ’Jambon’ : 0}
set Collection désordonnée d’éléments uniques
frozenset Collection désordonnée immuable d’éléments uniques
file Fichier informatique
none Type d’un vide (par exemple, par assignation de la valeur none à une
variable)
type Type du type des objets (exemple : type de la valeur renvoyée par la fonction
type())
object Type basique
slice Objet extensible
NotImpleme-
ntedType
bool Type de True et de False (renvoyés par exemple lors de tests ou d’opérations
booléennes)
exception Message d’erreur
fonction Fonction
module Module