[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
533 vues131 pages

Cours Python 2020

Transféré par

Fadwa Jabri
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)
533 vues131 pages

Cours Python 2020

Transféré par

Fadwa Jabri
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
Vous êtes sur la page 1/ 131

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

Vous aimerez peut-être aussi