Cours: Programmation Python
Par . Mariem TURKI
Contact : mariem.turki@isimg.tn
AU 2020/2021
1
Plan du chapitre 1: introduction au langage de
programmation Python
1) Présentation du langage python
2) Comparaison par rapport aux langages de programmation
classiques
3) Installation de l’environnement IDLE
2
Introduction
Un langage de programmation est un langage pour écrire des
programmes informatiques
Chaque langage suit des conventions et des syntaxes particulières
qu'il est nécessaire de respecter.
Un programme écrit par un langage quelconque doit être traduit en
un langage machine (une suite des 0 et des 1) compris par le
processeur.
Il existe de nombreux langages de programmation. Le choix de l’un
ou de l’autre dépend de plusieurs facteurs: les compétences du
développeur, les contraintes de l’application à développer, la
disponibilité des outils de développement…..
3
Le Python…un peu d’historique
Python est un langage de programmation, dont la
première version est sortie en 1991.
Il a été crée par Guido van Rossum, qui travaillait à
cette époque au Centrum voor Wiskunde en
Informatica aux Pays-Bas
En 2001, le langage a été baptisé à travers l’association
à but non lucratif : la Python Software Foundation
Son nom rendait hommage à la troupe de comiques
les « Monty Python ».
4
Que faire avec Python?
Python est un langage à la fois puissant, riche et facile à utiliser. Il
peut servir pour plusieurs types d’utilisation:
• Des petits programmes très simples, appelés scripts, chargés
d'une mission très précise sur un ordinateur ;
• Des programmes complets, comme des jeux, des suites
bureautiques, des logiciels multimédias…
Grace aux nombreuses bibliothèques supportées par python, un
développeur peut:
• Créer des interfaces graphiques ;
• Faire circuler des informations au travers d'un réseau ;
• Dialoguer d'une façon avancée avec votre système
d'exploitation
5
Python Vs Langage C
Python Langage C
• Le python est un langage • C’est un langage bas niveau
haut niveau
• C’est un langage interprété • Il s’agit d’un langage appelé
«langage compilé »
• Les instructions sont « • Avant de pouvoir les exécuter,
transcrites » en langage un logiciel spécialisé
machine au fur et à mesure (compilateur) se charge de
de leur lecture. transformer le code du
programme en langage
machine
Simplicité et portabilité Rapidité 6
Python Vs Langage C
Calcul de :
En C:
En Python
7
Le python à travers les années…
Depuis la création de la Python Software Foundation, en 2001, et
durant les années qui ont suivi, le langage Python est passé par
une suite de versions 2.x (2.3, 2.5, 2.6…).
Depuis le 13 février 2009, la version 3.0.1 est disponible. Cette
version casse la compatibilité ascendante qui prévalait lors des
dernières versions.
En effet, Un programme qui tourne à la perfection sous Python 2.x
devra donc être mis à jour pour fonctionner de nouveau sous
Python 3.
La dernière version qui existe à nos jours est la 3.8.5
Pour le reste de ce cours, nous utiliserons la version 3.3.2
8
Installation de l’environnement de développement
Site officiel du langage Python : http://www.python.org
La version Python 3.3.2 peut être téléchargée à partir du lien
suivant:
http://www.python.org/download/releases/3.3.2/ (datée du 15 mai
2013)
Une fois l’environnement est installé, lancer l’application IDLE
(Integrated DeveLopment Environment ) à partir du menu démarrer.
IDLE est développé en utilisant le module GUI appelé « tkinter »
(Tool kit interface)
IDLE permet de :
Utiliser Python en mode interactif (entrer des commandes,
recevoir une réponse, recommencer. . . )
Ecrire et sauvegarder des programmes (on dit aussi des scripts
ou mieux des modules) puis de les exécuter. 9
Installation de l’environnement de développement
l’application IDLE propose en outre les fonctionnalités suivantes :
• Coloration syntaxique
• Autocomplétion (avec la touche Tab), rappels syntaxiques (à la
parenthèse ouvrante d’une fonction)
• Indentation automatique après le caractère « : » . La fin d’un
bloc de niveau n + 1 (et donc le retour au bloc de niveau n qui le
contient) est obtenue par un “effacement arrière” après retour à
la ligne.
• Débogueur intégré : possibilité de placer des points d’arrêt, de
poursuivre l’exécution du script en mode “pas à pas” et de faire
le point à chaque étape
Une documentation complète sur IDLE se trouve à l’adresse
suivante : http://docs.python.org/3.3/library/idle.html 10
Installation de l’environnement de développement
Au démarrage de l’application IDLE, un message d’information sur
l’environnement est affiché:
11
Les premiers essaies….
Un premier essaie consiste à utiliser IDLE en mode : calculatrice
Les instructions sont évaluées une par une, et les résultats sont
affichés après chaque « Entrer »
Le texte précédé par # est un commentaire
12
Les premiers essaies….
Astuce 1: si on place le curseur sur une ligne déjà ancienne (donc a
priori inaccessible sauf par copier-coller), un simple appui sur «
Entrée » renvoie le contenu de cette ligne (ou celui de la zone
sélectionnée) au niveau du prompt.
Astuce 2 : les combinaisons de touches Ctrl+P et Ctrl+N (ou Alt+P
et Alt+N) permettent de circuler dans l’historique des lignes de
commande déjà entrées (P pour Previous, N pour Next).
Astuce 3: Les parenthèses permettent de contrôler l’ordre des
opérations arithmétiques qui, sinon, sont soumises aux règles de
priorité habituelles.
Astuce 4 : il est possible de se référer au résultat du calcul
précédent avec le caractère de soulignement _ (mais ça n’est
valable qu’en mode interactif)
13
Plan du chapitre 2: Les variables
1) Qu'est-ce qu’une variable ?
2) Les différents types de variables.
3) Opérations sur les variables
a. Les opérations
b. Modifier une variable à partir de sa propre valeur.
c. Modifier une variable à l'aide d'une autre variable.
4) La concaténation des chaînes de caractères.
5) Comment « assembler » des variables de types différents ?
14
Qu’est ce qu’une variable?
Définition 1: Pour mémoriser des valeurs, on les associe (on les lie,
on les affecte, on les assigne) à des identificateurs. Le couple
identificateur/valeur est appelé une variable.
Définition 2: Une variable est une donnée du programme, stockée
dans l’ordinateur. C'est un code alpha-numérique qui va être lié à
une donnée du programme, afin de pouvoir l'utiliser à plusieurs
reprises et faire des calculs un peu plus intéressants avec.
Syntaxe: nom_de_la_variable = valeur
15
Qu’est ce qu’une variable?
Pour définir une variable, trois règles à respecter:
• Le nom de la variable ne peut être composé que de lettres,
majuscules ou minuscules, de chiffres et du symbole souligné
« _ » (appelé underscore en anglais).
• Le nom de la variable ne peut pas commencer par un chiffre.
• Le langage Python est sensible à la case, ce qui signifie que des
lettres majuscules et minuscules ne constituent pas la même
variable
Les mots réservés ne doivent pas être utilisés
16
Les différents types de variables
Dans cette partie, uniquement les types simples sont présentés
Les types plus complexes seront détaillés un peu plus loin dans
ce cours
Avec le langage python, lors de la déclaration d’une variable, le
type n’est pas mentionné explicitement. Il est implicitement
« déduit » à partir de la valeur affectée à la variable.
Dans cette partie, les types suivants sont présentés:
• Les nombres entiers
• Les nombres flottants
• Les chaines de caractères
• Les booléens
17
Les différents types de variables
Les nombres entiers:
Python différencie les entiers des nombres à virgule flottante
(opérations et taille mémoire)
Le type entier se nomme « int » en Python
18
Les différents types de variables
Les nombres flottants
Les flottants sont les nombres à virgule. Ils se nomment
« float » en Python
19
Les différents types de variables
Les chaines de caractères
Ce type de donnée permet de stocker une série de lettres, ou
même une phrase
Une chaîne de caractères peut être définie de différentes
façons :
• Entre guillemets ( " Bonjour LSIM1 ! ") ;
• Entre apostrophes (‘ Bonjour LSIM1 ! ') ;
• Entre triples guillemets (""" Bonjour LSIM1 !""")
Les chaines contenants les caractères guillemets ou
apostrophes, ces derniers doivent être précédés par le slash
«\»
Des chaines avec des sauts de lignes sont définies entre triple
guillemets/apostrophes. 20
Les différents types de variables
Les booléens
Comme tout autre langage de programmation, le python
supporte le type booléen qui comporte deux valeurs:
• True
• False
Ce type est utile dans les structures de contrôle
21
Opérations sur les variables
22
Opérations sur les variables
23
Opérations sur les variables
En résumé, python permet les combinaisons suivantes:
• Str + str
• Int + int
• Float + float
• Int + float
24
Opérations sur les variables
Opérateurs mathématiques
25
Opérations sur les variables
Opérateurs de comparaison
Opérateurs logiques
26
Opérations sur les variables
Priorité des opérateurs
En cas d’égalité entre les opérateurs évaluation de gauche à
droite 27
Type des variables
type(variable) : Cette fonction renvoie le type d’une variable
28
Type des variables
• Int(): cette fonction convertie un réel ou un caractère
numérique en entier
• Float(): cette fonction convertie un entier ou un caractère
numérique en réel
• Str(): cette fonction convertie un entier ou un réel en une
chaine de caractère
29
Les fonctions de lecture/ecriture
print() : affiche des variables ou des messages.
• Exemple: print(‘’message’’, variable)
• Par défaut, à la fin d’un affichage avec la fonction print()
retour automatique vers une nouvelle ligne.
• Utiliser le séparateur ‘end’ pour ne pas revenir
automatiquement a la ligne
30
Les fonctions de lecture/ecriture
• input() : permet de saisir une donnée et l’affecter à une variable.
Cette fonction renvoie toujours un str
31
Les fonctions sur les chaines de caractères
Les codes ASCII : Exemples
• Ord(‘A’) affiche le code ascii de « A »
• Chr(65) affiche le caractère dont le code ascii est 65
Les chaines de caractères
• .capitalize() : met en majuscule le premier caractère de la
chaine
• .lower() : met tous les caractères en minuscule
• .upper() : met tous les caractères en majuscule
• .swapcase() :les caractères en majuscule sont mis en minuscule
et vice versa
• .title() : chaque début de mot est mis en majuscule
32
Les fonctions sur les chaines de caractères
Les fonctions suivantes retournent un booléen
• .isalpha() : vérifie si tous les caractères sont alphabétiques (sans
chiffre ni symboles ni espace)
• .isalnum() : vérifie si tous les caractères sont alphabétique ou des
chiffres
• .istitle() : vérifie si le début de chaque mot est en majuscule
• .isdigit() : vérifie si tous les caractères sont des chiffres
• .islower() : vérifie si tous les caractères sont en minuscule
• .isupper() : vérifie si tous les caractères sont en majuscule
• .startswith() : vérifie si ma chaine commence par un caractère
spécial mis en double cotes ou simple cote
33
Plan du chapitre 3: les structures de contrôle
1) L’indentation
2) La Structure conditionnelle : les instructions ‘if’, ‘elif’, ‘else’
3) Les Structures itératives
a) la boucle ‘for’
b) la boucle ‘while’
c) les instructions ‘break’ et ‘continue’
34
L’indentation
En Python, l’indentation du code est significative et donc
fondamentale !
Elle permet de définir les blocs de code, remplaçant en cela
les accolades utilisées dans d’autres langages.
Cette obligation d’indenter son code pour le structurer
entraîne en outre une grande lisibilité et légèreté du code.
Le caractère : (double point) définit le début du bloc
d’instruction.
35
La structure conditionnelle IF
Les parties elif... et else... sont facultatives.
Pour des tests multiples, on peut cascader plusieurs parties elif...
Synthaxe (attention à l’indentation)
if condition1: if condition1:
instruction 1 instruction 1
instruction 2 elif condition2:
instruction 2
if condition1: elif condition3:
instruction 1 instruction 3
instruction 2 instruction 4
else : else :
instruction 3 instruction 5
instruction 4 instruction 6 36
La structure conditionnelle IF
Si à un endroit on a syntaxiquement besoin d'un bloc mais qu'il n'y
a rien à faire, on peut utiliser l'instruction pass, qui justement ne
fait rien.
Pour vérifier les conditions, il est possible d’utiliser les opérateurs
de test suivants: >, <, >=, <=, ==, !=
Les chaines de caractères peuvent être comparées:
• Les chaines peuvent être égaux == ou inégaux !=
• Les chaines peuvent être supérieur > ou inférieur à <
• “A” est considéré inférieur à “B”
• le “a” minuscule est supérieur à “A” majuscule
37
La structure conditionnelle IF
Exercices:
1) Ecrire un programme en python permettant de saisir un
entier et de tester s’il s’agit un nombre pair, impair ou nul
2) Ecrire un programme en python permettant de saisir une
chaine de caractère et de tester si cette chaine commence
par ‘B’.
38
Les structures itératives: quelques notions sur les chaines
Une chaine de caractère est considérée comme étant un
tableau : le premier élément est d’index [0] puis[1]…et le
dernier est d’index [-1], l’avant dernier est d’index [-2]…
Chaine=‘colette’
chaine[0]
chaine[2:4]
chaine[2:-1]
Chaine[:]
Chaine[:3]
Chaine[1:]
Chaine[::2] 39
Les structures itératives: quelques notions sur les chaines
len(chaine) : Afficher le nombre de caractères dans la chaine
chaine.count("e") : afficher le nombre de ‘e ‘ dans la chaine
chaine.find(" ") : trouver l’index du premier espace, et
retourne -1 s’il y en pas pas
En général:
chaine.find(string, start index, end index)
40
Les structures itératives: la boucle for
La boucle for permet d’itérer les valeurs d’un objet itérable (
liste, tuple, chaîne de caractères).
Comme dans les autres structures de contrôle, le caractère :
(double point) définit le début du bloc d’instruction contrôlé
par ‘for’
Pour la boucle for , un intervalle doit être spécifié pour définir
les éléments parcourus
41
Les structures itératives: la boucle for
Synthaxe : (attention à l’indentation)
42
Les structures itératives: la boucle for
Exemples
Chaine = ‘azerty’ word = ’LSIM’
Chaine2= ‘’ for letter in word:
for c in chaine: print(letter)
chaine2=chaine2+ c* 2
print(chaine2)
Exercice
1) Ecrire un programme en python permettant de saisir une
chaine de caractère et de compter le nombre de ‘e’ dans
cette chaine
2) Ecrire un programme en python permettant d’afficher la
table de multiplication de 7.
43
Les structures itératives: la boucle while
La boucle while permet d’exécuter un bloc d’instruction aussi
longtemps qu’une condition (expression logique) est vraie.
Syntaxe : (attention à l’indentation)
while condition :
instructions
Exemple
i=1
while i<=5:
print(i)
i+=1 44
Les structures itératives: les instructions break et continue
Dans une boucle for ou une boucle while :
• l’instruction continue passe à l’itérationsuivante de la
boucle courante (i.e. sans poursuivre l’exécution des
instructions du bloc)
for i in range(5):
if i==3:
continue
print i
• l’instruction break provoque une sortie immédiate d'une
boucle while ou d'une boucle for
for i in range(5):
if i==3:
break
print i
45
Plan du chapitre 4: Les fonctions
1) Éviter de se répéter
2) Première définition des fonctions.
3) Vraies fonctions et procédures.
4) Portée des variables : variables locales et variables
globales.
5) Modifier une variable globale depuis l'intérieur d'une
fonction.
46
Les fonctions: Pourquoi?
En programmation, les fonctions sont très utiles pour réaliser
plusieurs fois la même opération au sein d’un programme.
Ainsi, les fonctions permettent d’éviter de répéter un bloc
d’instructions un certain nombre de fois le code est moins
chargé
Elles permettent également de rendre le code plus lisible et plus
clair en le fractionnant en blocs logiques.
47
Les fonctions: C’est quoi?
Une fonction est un bloc d’instructions qui a reçu un nom, dont
le fonctionnement dépend d’un certain nombre de paramètres
(les arguments de la fonction) et qui renvoie un résultat (au
moyen de l’instruction return).
Une fonction n’incluant pas l’instruction return, renvoie le type
« None » c’est-à-dire « rien »
Syntaxe d’une fonction
def nom_fonction (liste de paramètres ou arguments):
bloc d'instructions
48
Les fonctions: C’est quoi?
Dans python, il existe :
• Des fonctions définies par le programmeur
• Des fonctions prédéfinies dans python:
Certaines nécessitant le chargement d’un module par
exemple math.cos(angle) du module math qui renvoie le
cosinus de la variable angle exprimée en radian.
D’autres ne nécessitant pas un tel chargement et sont
dites des fonctions internes comme range() ou len().
Pour afficher les détails d’un module ou une fonction:
• Help(‘’module’’)
• Help(‘’module.fonction’’) 49
Les fonctions: C’est quoi?
Pour importer une fonction prédéfinie à partir d’un module
existant:
• import module
• import module as nom
• from module import fonction1, fonction2
• from module import *
50
Les fonctions: C’est quoi?
Exemples
Un affichage obtenu par print dans le corps d’une fonction ne
51
doit pas être considéré comme le résultat de la fonction.
Les fonctions: C’est quoi?
Pour importer une fonction définie dans un module crée par le
développeur, il suffit de:
• Enregistrer le module dans un fichier d’extension .py
• Ajouter le chemin vers ce module dans la liste des chemins
consulté lors de l’instruction import en tapant:
>>> sys.path.append(‘C:/chemin_vers_le_module’)
• Importer le module en utilisant l’instruction import
52
Les fonctions: C’est quoi?
Pour importer une fonction
définie dans un module crée
par le développeur:
• Enregistrer le module
dans un module.py
• Ajouter le chemin vers
ce module dans la liste
des chemins consulté
lors de l’instruction
import:
>sys.path.append(‘C:/che
min_vers_le_module’)
• Importer le module avec
import module 53
Les fonctions: documentation
Pour faciliter la compréhension du rôle d’une fonction, il est
important de rajouter une documentation après son en tête .
La documentation est délimitée par 3 guillemets et doit contenir
le rôle de la fonction, la liste de ses paramètres et le résultat
attendu
54
Les fonctions: Vraie fonction ou procédure?
En python, une fonction peut avoir:
• aucun paramètre
• Un ou plusiers paramètres. Dans ce cas, on parle de :
Passage par valeur
Passage par référence
En python, une fonction peut renvoyer:
• Aucun résultat. On parle alors d’une procédure
• Un ou plusieurs résultats affectés à une ou plusieurs
variables grâce à l’instruction return. Dans ce cas, elle est
considérée comme une vraie fonction 55
Les fonctions: Sans paramètres
Exemples:
56
Les fonctions: Avec paramètres
Les arguments non modifiables miment le comportement du
passage par valeur.
Les arguments modifiables se comportent comme des
arguments passés par référence (adresse). Suspens, ce type de
passage de paramètres sera traité dans le chapitre sur les Listes
57
Les fonctions: Avec paramètres
Une fonction définie def fct(x, y): Les arguments x et y sont
appelés arguments positionnels. Il est strictement obligatoire de
les préciser, dans l’ordre, lors de l’appel de la fonction sinon elle
renvoie une erreur
Il est possible de définir un ou plusieurs arguments avec une
syntaxe def fct(arg1=val1, arg2=val2…): est appelé argument
par mot-clé. Le passage de tels arguments lors de l’appel de la
fonction est facultatif et peut être à un ordre arbitraire
Pour les paramètres positionnels, il est possible de préciser leurs
mots clés lors de l’appel. Dans ce cas, l’ordre d’appel est
arbitraire
58
Les fonctions: Avec paramètres indeterminés
Si l’on connait pas à l’avance le nombre de paramètres de la
fonction, il est possible d’utiliser le mot clé *arg
Exemple:
59
Les fonctions: Portée des variables
Lorsqu’une fonction est appelée, python lui réserve (dans la
mémoire) un espace de noms. Cet espace de noms local à la
fonction est à distinguer de l’espace de noms global où se
trouvaient les variables du programme principal (avant la
définition de la fonction). Après l’exécution de la fonction,
l’espace local réservé est écrasé.
Portée : lors de la première affectation, une variable n’est visible
que dans certaines régions de la mémoire. On distingue alors:
• Une variable déclarée à la racine d'un module est visible dans
tout ce module. On parle alors de variable globale .
• Une variable déclarée dans une fonction ne sera visible que
dans cette fonction. On parle alors de variable locale 60
Les fonctions: Variables locales
Les variables définies à l’intérieur du corps d’une fonction, ne
sont accessibles qu’à la fonction elle-même.
Une variable locale peut avoir le même nom qu’une variable
globale mais elle reste néanmoins indépendante.
61
Les fonctions: Variables globales
Toute variable globale et connue et utilisable partout dans le
fichier où elle est définie, en particulier dans n'importe quelle
fonction de ce fichier.
Pour modifier une variable globale, il suffit d’utiliser l’instruction
global. Sans l’utilisation de l’instruction global, une variable
globale est utilisée uniquement en lecture.
62
Les fonctions: Variable locale ou globale ou interne?
Lorsqu’une variable est appelée, python considère son type en
suivant des priorités particulières:
• D’abord il vérifie si la variable est locale,
• Si elle n’existe pas localement, il vérifiera si elle est globale
• Enfin si elle n’est pas globale, il testera si elle est interne
On parle alors de la règle LGI (Locale, Globale, Interne)
63
Les fonctions: la récursivité
Une fonction est dite récursive si elle fait appel à elle-même.
On dit qu’une fonction appelante fait appel à une fonction
appelée
Attention aux paramètres des fonctions appelante et appelée !!
Les appels récursifs doivent s’arreter à un certain moment
appelé « point d’arrêt »
64
Plan du chapitre 5: Les conteneurs
1) Introduction.
2) Les listes
3) Les Tuples
4) Les dictionnaires
65
Introduction
Dans le langage python, il existe
un type d’objets composite
destiné à contenir d’autres objets. Ce type est appelé
conteneur
Les conteneurs sont des objets itérables qui peuvent être:
• Mutables ou non mutables
• Ordonnés ou non ordonnés
Les conteneurs du langage python sont:
• Les chaînes (déjà vu précédemment)
• Les listes
• Les tuples
• Les dictionnaires
• Les ensembles 66
Les listes: Définition
Une liste est une collection ordonnée et modifiable d’objets
éventuellement hétérogènes séparés par des virgules , et définis
entre crochets [].
Le nombre d’éléments d’une liste L est déterminé par la fonction
len(L) .
L[i] est l’élément de rang i.
Un indice négatif permet d'accéder aux éléments à partir de la
fin: le dernier élément est : L[-1] et son premier est: L[-len(L)])
67
Les listes: Définition
L[i] retourne (i+1)ème élément de L
L[ :a+:sous séquence d’éléments du début jusqu’à l’élément
d’indice a exclu [0,a[
L[a: +:sous séquence d’éléments de l’indice a inclus jusqu’à la fin
L[ : ] : toute la liste
L[a:b+: sous séquence d’éléments allant de l’indice a inclu jusqu’à
l’élément d’indice b exclu
L[a:b:c+:sous séquence d’éléments de l’indice a inclu jusqu’à
indice b exclu par pas égal à c 68
Les listes: Opérations sur les listes
Création et sous listes
69
Les listes: Opérations sur les listes
Concaténation et copies
70
Les listes: Quelques méthodes sur les listes
Soit L une liste. Plusieurs méthodes peuvent êtres appliquées:
• L.sort() : ordonne les éléments d’un tab du petit au grand.
Renvoie une erreur si L contient des types mixtes. Possible
si tous les éléments sont str
• L.append(elmt) : ajoute l’elmt à la fin de la liste
• L.reverse() : renverse les éléments (le dernier devient
premier …)
• L.remove(elmt) : Supprime l’elmt sélectionné
• L.index(elmt) :renvoie l’indexe de l’elmt
• L.pop() : supprime le dernier élement de la liste
• L.extend([elmt1,elmt2…]) : rajoute la liste élémentaire à L
• L.count(elmt) : renvoie le nombre d’occurrence de elmt
dans L
• L.insert(indice, elmt): insere l’elmt à la position
71
sélectionnée sans supprimer aucun autre
Les listes: parcours des éléments
72
Les tuples
Les tuples sont des structures de données qui sont:
• Composées de plusieurs valeurs éventuellement hétérogènes
(int, float, string, list ou tuple)
• Immuables (non modifiables): c’est-à-dire les cases ne peuvent
pas être affectées individuellement
• Les éléments d’un tuple peuvent être délimités avec ou sans
des ( ) et séparés toujours par des virgules: T= ( 3 , 7 , ( 1 , 2 ,
’hi’ ) , [ 4.8 , 9] ) 73
Les tuples: pourquoi?
Le fait de ne pas pouvoir modifier un élément individuellement
dans un tuple semble mettre en cause l’utilité des tuples.
Les Tuples sont utiles dans les cas suivants:
• Lorsqu’on a besoin d’une séquence de valeurs fixes (comme
dans le cas des boucles for)
• Lorsque le programme a de forte contraintes de mémoire
puisqu’une même séquence de valeurs dans un tuple
occupe moins d’espace mémoire qu’une liste
RQ: getsizeof donne la taille d’un
objet dans la mémoire en octets
74
Les tuples: Manipulation
Les opérations pour la gestion en lecture vues dans le cas des
listes, restent valables pour les tuples (test, concaténation,
slicing…)
75
Les tuples et les fonctions
Dans le cas ou une fonction qui retourne plusieurs valeurs , ces
valeurs forment un typle.
Exemple: une fonction qui calcule le max et le min dans une
liste d’entiers
76
Les tuples et les listes
Un tuple peut être crée à partir d’une liste
Une liste peut être crée à partir d’un tuple
RQ:
• les valeurs de L et L2 sont
identiques L==L2 TRUE
• Mais les objets sont
différents et référencent
deux emplacements
différents dans la mémoire
L is L2 FALSE
• Bien que les valeurs de L et T
sont identiques, mais les
types sont différents L==T
false 77
Les dictionnaires
Un dictionnaire est une collection non ordonnée (pas d’indice)
de données de différents types crées sous forme de couples
{clé: valeur}
D={clé1:valeur1 , clé2: valeur2, clé3: valeur3 ………..}
• Une clé: peut être de type int, float, str ou bool
• Une valeur: peut etre n’importe quel type : int, float, str,
bool, list, dict, tuple ….
Les dictionnaires s’adaptent dynamiquement au nombre de
valeurs à manipuler
Il est possible de crée un dictionnaire vide et puis de le remplir
à fur et à mesure de l’application
Exemple de déclaration de dictionnaire vide :
• D={}
• D=dict() 78
Les dictionnaires: Manipulation
Les fonctions keys() et values() permettent d’afficher
respectivement les clés et les valeurs du dictionnaire
Il est possible d’afficher une seule valeur du dictionnaire en
appelant simplement sa clé. Par exemple : classe*‘nom’+
79
Les dictionnaires: Manipulation (suite)
80
Les dictionnaires: ajout, suppression, modification
La concaténation n’est pas permise avec les dict
La méthode update permet de mettre à jour/ ajouter un ou plusieurs
clés
81
Les dictionnaires: ajout, suppression, modification (suite)
L’opérateur ‘=‘ permet de copier la référence de l’objet (son
adresse) tout changement dans un objet implique le même
changement dans sa copie
La méthode copy() permet une copie du contenu non pas de l’adresse
82
Les dictionnaires: Comparaison
83
Les dictionnaires: Trie
Le trie d’un dictionnaire peut être fait par clé ou par valeur
Dans ces deux cas, il faut que tous les clés/valeurs soient
ordonnables. C’est-à-dire avoir des types pouvant être ordonnés
(impossible d’ordonner un bool avec un str)
Pour le Trie par clé il suffit d’utiliser la fonction sorted()
84
Les dictionnaires: Trie
Le trie par valeur peut se faire avec les fonctions sorted() et
lambda()
Rappel: la fonction lambda x:x**2 est équivalente à la fonction:
def carree (x):
return x**2
85
Plan du chapitre 6: Les modules usuels
1) Introduction
2) Le module « random »
3) Le module « os »
4) Le module « math »
86
Introduction
Les modules sont des programmes Python qui contiennent des
fonctions que l’on est amené à réutiliser souvent (appelés aussi
bibliothèques ou libraries). Ce sont des « boîtes à outils » qui sont
très utiles.
Plusieurs modules sont déjà installés dans les versions standards
de Python.
il existe de nombreux autres modules externes qui ne sont pas
installés de base dans Python mais qui sont très utilisés . Exemple:
matplotlib (construction de graphiques), Keras et Tensorflow (deep
learning et IA)….
Pour avoir une liste exhaustive de l’ensemble des méthodes
associées à une variable particulière, la fonction dir(module) fait
l’affaire
87
Introduction
Il existe une série de modules indispensables pour programmer
en python. En voici une liste non exhaustive:
• math : fonctions et constantes mathématiques de base (sin,
cos, exp, pi. . . ).
• sys : interaction avec l’interpréteur Python, passage
d’arguments…
• os : dialogue avec le système d’exploitation
• random : génération de nombres aléatoires.
• time : accès à l’heure de l’ordinateur et aux fonctions gérant
le temps.
• urllib : récupération de données sur internet depuis Python.
• tkinter : interface python avec Tk. Création d’objets et
d’interfaces graphiques 88
Le module random
Ce module contient toutes les fonctions permettant de produire
un résultat/ou valeur aléatoire.
En voici quelques exemples:
• random() : génère un réel aléatoire de l’intervalle *0,1*
• randint(start,stop): retourne un entier aléatoire de
l’intervalle*start,stop]
• randrange(start,stop, step): retourne un nombre aléatoire
de l’intervalle *start,stop[ avec un pas de step
• shuffle(x) : ordonne la liste x d’une manière aléatoire
• choice(séquence): il choisie un élément aléatoire d’une
séquence donnée.
• sample(séquence,k) : retourne k éléments aléatoires de la
séquence donnée 89
Le module math
Ce module contient toutes les fonctions mathématiques de base
comme:
• Les fonctions trigonométriques
• Les fonction mathématiques/de conversion
• Les constantes
90
Le module math: les fonctions trigonométriques
Les fonctions cos(x), sin(x) et tan(x) : Renvoient respectivement
le cosinus, le sinus ou la tangente de x exprimé en radians.
Les fonctions acos(x), asin(x) et atan(x) : Renvoient
respectivement l’arc cosinus, l’arc sinus et l’arc tangente de x
exprimé en radians.
La fonction degrees(radians) Convertit en degrés un angle
exprimé en radians.
La fonction radians(degrés) Convertit en radians un angle
exprimé en degrés.
91
Le module math: les fonctions mathématiques
Les fonctions sqrt(x), fabs(x), exp(x) calculent respectivement la
racine carrée, la valeur absolue et l’exponentiel de x
(𝑒 𝑥 avec e ≈ 2,72)
Les fonctions ceil(x) , floor(x) et trunc(x) renvoient
respectivement la valeur entière supérieure, inférieure et
l’entier sans partie fractionnelle d’un réel x
Les fonctions pow(x,y) et factorial(x) calculent respectivement
𝑥 𝑦 et x!
La fonction log(x[,base]) Renvoie le logarithme de x dans une
base donnée. Si la base n’est pas spécifiée, c’est le logarithme
de base e (logarithme neperien) qui est calculé. 92
Les Module os : interaction avec le système d’exploitation
Le module « os » gère l’interface avec le système d’exploitation. En
voici une liste de fonctions intéressantes de ce module:
• os.path.exists("fichier") : Vérifie la présence d’un fichier sur le
disque dur.
• os. getcwd (): Affiche le chemin du répertoire de travail
• os.listdir() : Affiche le contenu du répertoire à partir duquel
python est lancé
• os.mkdir(“chemin_du_rep“) : crée un répertoire dans le
chemin specifié
• os.rename(“chemin_du_src“, “chemin_du_dest“) : renommer
un fichier ou un répertoire
• os.remove(‘chemin du fichier’): supprime un fichier
• os.rmdir(‘chemin du dossier’): supprime un dossier vide 93
Les Module os : interaction avec le système d’exploitation
Pour ouvrir, lire et écrire dans un fichier, il est possible d’utiliser
les fonctions suivantes: os.open(), os.read(), os.write()
Ces fonctions sont utilisés pour manipuler des fichiers au bas
niveau (niveau système d’exploitation)
Dans python, il existe des fonctions internent qui font
relativement la même chose : open(), read() et write()
Pour raison de simplicité, nous allons utiliser dans cette partie
ces fonctions internes et non pas celles intégrées dans le
module os
94
Manipulation des fichiers
La fonction open() prend en général deux arguments:
• Le nom du fichier (avec chemin relatif ou absolu)
• Le mode d’ouverture qui peut être:
‘r’: ouverture en mode lecture (‘r+’ lecture+ écriture sans
écrasement)
‘w’: ouverture en mode écriture: écrasement du contenu
existant (‘w+’ écriture + lecture avec écrasement)
‘a’: ouverture en mode écriture à la suite qui existe déjà
dans le fichier (‘a+’ écriture sans écrasement + lecture)
Une fois le fichier est ouvert, il devient verrouillé à toute autre
utilisation externe. Il faut impérativement le fermer à la fin de son
utilisation avec la fonction close() 95
Manipulation des fichiers
Exemple1
96
Manipulation des fichiers
En cas d’oublie de fermeture de fichier, il est possible d’utiliser la
commande with qui permet de fermer le fichier à la fin des
ensemble d’instructions relatives
Le fichier est fermé automatiquement après l’affichage de son
contenu
97
Manipulation des fichiers
La fonction read() permet de lire tout le contenu d’un fichier.
La fonction read(N) permet de lire N caractères
Pour lire le contenu d’un fichier ligne par ligne, il suffit d’utiliser la
fonction readline()
Le premier appel de la fonction fichier.readline() retourne la
première ligne du fichier. Le second appel de cette fonction
retourne la seconde ligne. Etc…
La méthode fichier.readlines() retourne toutes les lignes d’un
fichier dans une variable de type list
Exemple : L1=fichier.readlines()
Il est possible de parcourir toutes les lignes d’un fichier avec la
boucle for.
98
Manipulation des fichiers
Dans la fonction open() L’option mode=‘w’ permet d’ouvrir le
fichier en mode écriture. Si le fichier n’existe pas, il sera crée. S’il
existe déjà il sera écrasé.
L’option mode=‘a’ permet d’ouvrir le fichier en mode ajout
(append). Si le fichier n’existe pas, il sera crée. S’il existe déjà,
l’écriture s’ajoutera à la suite du contenu existant .
99
Plan du chapitre 7: Les interfaces graphiques
1) Introduction
2) Le module « tkinter » pour les interfaces graphiques
b- Les widgets
c- Le widget canevas
e- Animation automatique : les fonctions récursives.
100
Les interfaces graphiques : Intérêt
Pour développer une GUI, il faut créer une fenêtre graphique
contenant l’application, ainsi que des widgets inclus dans la
fenêtre.
Il existe beaucoup de modules pour construire des applications
graphiques. Par exemple : Tkinter , wxpython, PyQt...etc.
Le module Tkinter qui est présent de base dans les distributions
Python. Il permet de piloter la bibliothèque graphique Tk (Tool
Kit)
Ainsi, Tkinter signifiant tk Interface 101
Les interfaces graphiques : les widgets
Les widgets (window gadget) sont des objets graphiques
permettant à l’utilisateur d’interagir avec un programme Python
de manière conviviale.
Les boutons, les listes de choix et la zone de texte sont les widgets
les plus utilisés
La fenêtre principale est conçue en créant une instance de la
classe tkinter.Tk().
Les widgets qui seront par la suite crées sont considérés comme
des fils de cette classe.
102
Les interfaces graphiques : les widgets
Premier exemple:
103
Les interfaces graphiques : les widgets
En général: tkinter.Label(master:None, **options)
• master: la fenetre dans la quelle va apparaitre le label
• options: des arguments relatifs à la mise en forme du label.
Exemples:
• text: le text écrit dans le label
• anchor : position du text ou image dans le label (n,e,s,w, par défaut=center)
• bg: couleur du background
• bd: taille du borderwidth
• fg: foreground : la couleur du label
• height/width= hauteur/largeur du label
• Image
104
Les interfaces graphiques : les widgets
En général: tkinter.Button(master:None, **options)
• master: la fenêtre dans la quelle va apparaitre le bouton
• options: des arguments relatifs à la mise en forme du bouton.
Exemples:
• text: le texte écrit dans le bouton
• anchor : position du text ou image dans le label (n,e,s,w, par défaut=center)
• bg: couleur du background
• bd: taille du borderwidth
• fg: foreground : la couleur du label
• height/width= hauteur/largeur du bouton
• Image: le nom/chemin de l’image à insérer dans le bouton
• Command: la fonction ou la méthode appelée une fois le bouton est appuyé
105
Les interfaces graphiques : les widgets
En général: tkinter.Entry(master:None, **options)
• master: la fenêtre dans la quelle va apparaitre le texte tapé
• options: des arguments relatifs à la mise en forme du text.
• Exemples:
• textvariable=chaine : représente la chaine mise par défaut
• width/height: taille de l’espace réservé
• fg:couleur du texte tapé
• ……..
106
Les interfaces graphiques : les widgets
En général: tkinter.Checkbutton(master:None, **options)
• master: la fenêtre dans la quelle va apparaitre le texte tapé
• options: des arguments relatifs à la mise en forme.
• Exemples:
• text: texte relatif au choix
• variabe: la variabe relative au choix
• Les options relatives aux couleurs, tailles, images …sont identiques que celles autres
widgets
• ……..
107
Les interfaces graphiques : les widgets
Lors de la création des widgets, rien ne se passe dans la fenêtre
principale (master)
Pour arranger (placer) les différents widgets dans la fenêtre
principale, trois méthodes sont utilisées:
• .pack(): Elle permet de positionner le widget sous forme de
block unitaire.
• .grid() elle permet d’arranger les widgets sous forme d’une
grille (matrice, table) de plusieurs widgets. Elle prend quelques
options tel que (voir diapo précédente):
row/column
Sticky: position du widget dans l’emplacement qui lui est réservé : E,W,N,S (pour est,
ouest, nord et sud)
padx et pady : marge par rapport à x et y
• .place(): permet au développeur de spécifier l’emplacement exacte du
108
widget.
Les interfaces graphiques : les widgets
La méthode .pack(), avec une notation générale widget.pack()
est appelée pour placer le widget dans la fenêtre graphique
La méthode pack peut prendre quelques options sur la mise en
place du widget:
• side=LEFT ou RIGHT ou TOP ou BOTTOM
• fill=X ou Y ou BOTH
• padx et pady : marge par rapport à x et y
Il est possible de définir une option d’un widget après la création
du widget : widget["option"] = valeur.
Exemple
Bouton=tkinter.Button(fenetre, text=‘’cliquer ici’’)
Bouton*‘’fg’’+=‘red’
109
Les interfaces graphiques : les widgets
La boucle .mainloop() est utilisée pour que l’interpréteur reste
attentif en boucle sur la fenêtre graphique(notion d’évènement).
Le code qui suit cette boucle ne sera interprété qu’après la sortie
de la fenêtre
L’affichage de « good bye » n’est effectué qu’après avoir appuyé sur
le bouton quitter
110
Les interfaces graphiques : Le widget Canevas
Le widget canvas de Tkinter est très puissant. Il permet de
dessiner des formes diverses (lignes, cercles, etc.), et même de
les animer !
La classe tkinter.Canvas crée un widget canvas qui correspond à
une zone dans laquelle divers objets tels que des ellipses, lignes,
polygones, etc., peuvent être dessinés.
Des images et du texte peuvent également être insérés
1er exemple
111
Les interfaces graphiques : Le widget Canevas
En général
• .create_line(x1, y1, x2, y2, options)
• .create_rectangle(x1,y1,x2,y2,options)
• .create_polygon(x1, y1, x2, y2, x3, y3 …..,options )
• .create_oval(x1,y1,x2,y2,options)
• .create_arc(x1,y1,x2,y2,options)
(x1,y1) est le point supérieur gauche et (x2,y2) est le point
inférieur droite
112
Les interfaces graphiques : Le widget Canevas
Selon la forme, les options peuvent être :
• fill: la couleur du contenu
• width: l’epaisseur du trait
• outline: la couleur du trait du contour
• activefill: la couleur de l’objet lorsque le curseur est placé
sur lui
• tags: étiquettes ou ensemble de données relatives à la
forme
• ………..
113
Les interfaces graphiques : Le widget Canevas
Exercice:
Ecrire un programme python qui permet de créer une interface
contenant:
• Un espace pour dessiner des formes géométriques
• Un bouton placé en haut à gauche, une fois ce bouton est
activé, il permet de dessiner 20 cercles de couleur, taille et
emplacement aléatoires
• Un bouton placé sous le premier, une fois activé, ce bouton
permet de dessiner 20 lignes de position et de couleurs
aléatoires
• Un bouton placé à gauche en bas, une fois activé, il permet
de quitter la fenêtre graphique
114
Exemple
115
Les interfaces graphiques : Le widget Canevas
Remarques:
Dans l’exercice précédent: notez que les fonctions appelées lors
de la création des boutons (bouton_cercle et bouton lignes)
sont appelées sans arguments
Il s’agit de fonctions dites « callback ». C’est-à-dire, les fonctions
qui sont passées comme arguments pour d’autres fonctions.
En d’autre termes, lors de la création du bouton, la fonction
tkinter.Button() contient un ensemble d’arguments, entre
autres la fonction à lancer si l’on clique sur le bouton (cree_ligne
ou cree_cercle dans notre cas) et celles-ci doivent être sans
arguments puisqu’elles sont considérées comme arguments de
la fonction principale relative à la création du bouton
116
Les interfaces graphiques : Animation
Ilexiste plusieurs techniques permettant d’animer les objets
dans le Canvas. Nous allons découvrir trois techniques simples
pouvant faire l’affaire:
• La méthode .coords(): elle permet de mettre à jour les
paramètres d’un objet déjà existant dans le Canvas
• La méthode .after() elle permet de rappeler une autre
méthode/ou fonction après un certain temps
• La récursivité: c’est lorsqu’une fonction fait appel à elle-
même (utile par exemple dans le calcul du factoriel)
Pour mieux comprendre ces techniques, elle sont utilisées dans
l’exemple suivant.
117
Les interfaces graphiques : Animation
118
Les interfaces graphiques : Animation
119
Les interfaces graphiques : Animation
Dans l’exemple précédent, la fonction deplacer() est appelée
toutes les 50ms grâce à la méthode .after() ça se répète tellement
vite (50ms) que ça donne l’impression du mouvement
Autre utilisation de .after(): fenetre.after(5000,fenetre.destroy)
est utilisée pour fermer la fenêtre principale après 5s)
La fonction deplacer() est appelée dans la fonction deplacer()
c’est de la récursivité
La méthode .coords() de la classe Canvas met à jour les
coordonnées d’un objet déjà crée. Cela veut dire qu’elle ne crée
pas un nouveau objet mais plutôt modifie les cordonnées d’un
ancien
120
Chapitre 8: Voir Plus en Python
Dans ce chapitre, nous allons découvrir quelques notions
permettant de raffiner un code python
Nous découvrirons en particulier :
• L’Ecriture formatée
• Les exceptions
121
Ecriture formatée
La fonction print() permet essentiellement d’afficher des chaine de
caractères ainsi que tout type de variable.
En s’associant avec la méthode format(), l’affichage peut être mise
en forme d’une manière personnalisée.
Les {} (l’équivalent de % dans C) identifient la position de la
variables donnée comme argument à la méthode format()
Les variables sont remplacées dans l’ordre de leur écriture dans la
méthode format()
122
Ecriture formatée
Si l’on a plusieurs variables à afficher avec la méthode format(), il
est possible de spécifier l’indice de chaque variable dans les ,-
L’indice de la première variable est 0
123
Ecriture formatée
Dans le cas des réels, il est possible de fixer le nombre N de chiffres
après la virgule à afficher en utilisant la notation :.Nf (avec f pour
dire float, d pour décimal, s pour string …)
Il est possible d’aligner à
droite, à gauche ou de center
un affichage en utilisant
respectivement les opérateurs
>,<,^
124
Ecriture formatée
Lors de l’alignement, il est possible de combler l’espace restant par
des caractères autre que l’espace
Dans l’exemple print(‘{:*>12d} ’.format(10)) 12 emplacements
sont utilisés:
• 2 emplacements pour afficher l’entier 10 aligné à droite
• 10 emplacements restants sont occupés par des étoiles *
125
Les Exceptions
Un programme python est une suite d’instructions. Lors de
l’interprétation de ces instructions une anomalie peut survenir: il
s’agit d’une exception qui interrompe le déroulement normal du
programme.
Plusieurs types d’exceptions sont possibles: Division par zero
(ZeroDivisionError), variable non déclarée(NameError), problème
de conversion (ValueError), parcours de list (IndexError)…
Pour découvrir les autres exceptions , taper:
Le système de gestion des exceptions évite que le programme «
plante » en prévoyant les sources d’erreurs éventuelles.
126
Les Exceptions
La gestion des exceptions est assuré par les instructions (try, except)
• Le programme prévoit en
entrée un entier qui sera
convertit par la fonction int()
• Lorsqu’une chaine est tapée,
le programme génère une
exception de type ValueError
• Le programme essaie
d’exécuter une instruction
donnée précédée par « try »
• Si une exception de tout type
survient, le programme affiche
un message d’erreur donné
par le développeur
Les Exceptions
Un programme peut continuer à tourner tant qu’une exception
existe grâce à l’instruction (while True :)
128
Les Exceptions
• Ici, le même message
affiché quelque soit le
type d’erreur (pourtant il
s’agit d’une variable A
non définie)
• Il est possible de raffiner
la gestion des exceptions
selon le type d’erreur
• L’exception de type
NameError est détectée
en premier
129
Les Exceptions
En général: Syntaxe complète d’une exception
130
Les Exceptions
Selon l’application, il est parfois utile de faire apparaitre/ lever ou
déclencher une exception . Dans ce cas, le mot clé « raise » est
utilisé.
Il est encore possible de déclencher une exception par type
131