Vous êtes sur la page 1sur 300

Python : fondamentaux

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 190


Plan

1 Introduction
2 PEP
3 Console Python
4 Variables
Déclaration
Type
Identité
Opérations sur les variables
Suppression
5 Lecture d’une saisie
6 Fichiers de code Python

H & H: Research and Training 2 / 190


Plan

7 Formatage de chaı̂ne de caractère

8 Commentaires

9 Structures conditionnelles
if
if ... else
if ... elif ... else
pass

H & H: Research and Training 3 / 190


Plan
10 Structures itératives
while
while ... break
while ... continue
while ... else
for
for-one-line
for ... break ... else
11 Collections (tableaux dynamiques)
List
Tuple
Set
Dictionary
12 Variable (objet) muable (mutable)

H & H: Research and Training 4 / 190


Plan

13 Fonctions
Déclaration et appel
Fonction récursive
Fonction à multi-valeurs de retour
Fonction retournant une fonction
Type
Paramètres avec valeur par défaut
Opérateur *
Opérateur **
Paramètre kwargs
Fonction de retour (callback)
Fonction génératrice
Variables locales et globales
Fonction Lambda

H & H: Research and Training 5 / 190


Plan

14 Documentation
help
Documentation HTML
Documentation et introspection

15 Constantes

16 Émulation du switch

17 Pylint

H & H: Research and Training 6 / 190


Introduction

Python

Python ?
langage de programmation
I c
orienté objet et procédural
EL H
fortement typé (Impossible de concatU
MO
éner une chaı̂ne et un entier
L
sans convertir l’entier en chaı̂ne)
fE
interprété
c h r e
à typageA
c dynamique

première version créée par Guido van Rossum en 1991 puis


par Python Software Foundation depuis la version 2 en 2001

H & H: Research and Training 7 / 190


Introduction

Python
Python, pourquoi ?
Langage de haut niveau, doté de

gestion automatique et dynamique de mémoire : ramasse-miettes, pas de


pointeur, pas d’allocation de mémoire...
I c
système de gestion d’exceptions
E L H
Disposant d’une bonne documentation, desO U
L M supports vidéos, plusieurs exemples
fE
sur internet

Énorme communauth
c é : r
unedes langages les plus utilisés dans le monde

c A
(https://www.tiobe.com/tiobe-index/)

Permettant de développer des programmes :

extensibles (avec des bibliothèques C existantes)


portables : Windows, Mac OS, Linux
...

H & H: Research and Training 8 / 190


Introduction

Python

Python : multi-domaine
I c
E
Développement Web : disposant des frameworks
H
L très évolués et
U
très populaires comme Django
L MO
Data : très utilisé en e
r Big E Machine Learning et Data Science
f Data,
A h
c simples à exécuter dans une console
c
Script : instructions

H & H: Research and Training 9 / 190


Introduction

Python

Hello world en Java L’équivalent en Python

I c

public class Main {
H
print("Hello world")

EL
U
MO
public static void main (String [] args) {

E
System.out.print("Hello world");
f L
}
chre
} c A

H & H: Research and Training 10 / 190


Introduction

Python
Quelques versions de Python
Python 1 (sortie en 1991)

Python 1.5 (sortie en avril 1999)

Python 1.6 (sortie en septembre 2000)


I c

ELH
Python 2.0 (sortie en octobre 2000)
U
L
Python 2.1 (sortie en avril 2001) MO
f E
hre
Python 2.6 (sortie en octobre 2008)
c
c A
Python 2.7 (sortie en juillet 2010)

Python 3.0 (sortie en décembre 2008)

Python 3.1 (sortie en juin 2009)

Python 3.7 (sortie en janvier 2018)

Python 3.8 (sortie en octobre 2019)

H & H: Research and Training 11 / 190


Introduction

Introduction

I c

ELH
Python : téléchargement
U
L
https://www.python.org/downloads/ MO
h r e fE
A c
c

H & H: Research and Training 12 / 190


PEP

Python

PEP : Python Enhancement Proposal


I c
Propositions d’amélioration de Python EL
H
O U
M
L d’homogéniser le code
Ensemble de règles qui permet
re f E
c h
https://www.python.org/dev/peps/
c A

H & H: Research and Training 13 / 190


PEP

Python

Les règles de nommage (PEP 8)

Classes et exceptions : Pascal case


I c
H
L (packages) :
Edossiers
Snake case O U
Variables, fonctions, méthodes, fichiers (modules) et

Constantes : Snake case (All E L M


r e f Caps, en français tout en majuscule en séparant

chon conseille d’utiliser des noms courts.


les mots par des underscores)
A
c
Modules et packages,

Packages, on déconseille d’utiliser les underscores

H & H: Research and Training 14 / 190


PEP

Python

Les instructions (PEP 8)

80 caractères maximum par ligne.


I c
L
4 espaces pour l’indentation (pas de tabulation).
E H
U
Oérents éléments.
2 lignes de séparations entre les diff
L M
f E fichier de code.
1 ligne vide à la fin de chaque
r e
1 espace aprA èsc:hmais pas avant
c
1 espace avant et après chaque opérateur
1 instruction par ligne

H & H: Research and Training 15 / 190


Console Python

Python

Consoles Python
I c

Allez dans la barre de recherche de Windows
EL H
U
Cherchez
L MO
r e f laEconsole (invite de commandes), ou
Python 3.8 et ouvrez
h
A c 3.8 et ouvrez la console (Power Shell)
IDLE Python
c

H & H: Research and Training 16 / 190


Console Python

Python

Remarques

I c

Une instruction Python commence par >>>
E>>>LH
Le résultat de l’instruction est affiché à la ligne U
MO
sans

fE L
c h r e
c A

H & H: Research and Training 17 / 190


Console Python

Python

Remarques

I c

Une instruction Python commence par >>>
E>>>LH
Le résultat de l’instruction est affiché à la ligne U
MO
sans

fE L
h
Afficher Hello worldcen Python
r e
c Aworld")
>>> print("Hello
Hello world

H & H: Research and Training 17 / 190


Console Python

Python

Console simple vs IDLE (Integrated Development and Learning Environment)

IDLE = console + coloration du code + auto-complétion + indentation automatique + ...

I c

Copier/coller un code multi-lignes fonctionne avec la console mais pas avec l’IDLE

def somme(a, b):


ELH
U
MO
return a + b

print(somme(2, 3))
f E L
chre
c A
Il faut configurer pour récupérer l’historique des commandes lancées depuis un IDLE

Il est possible de stocker l’historique des commandes lancées depuis un IDLE dans un
fichier

IDLE est évidemment moins rapide que la console

H & H: Research and Training 18 / 190


Console Python

Python

Autres consoles Python


bpython (https://bpython-interpreter.org/) : uneI c

ELH
console avec un éditeur de texte avancé offrant la possibilité de
U
MO
modifier les commandes précédentes, auto-indentation, système
L
re f E
de suggestion pour l’auto-complétion....

c h
ipython (https://ipython.org/)
A : une console orientée data
facilitantcla visualisation
de données et intégrant des outils de
haute performance pour les calculs parallèles.

H & H: Research and Training 19 / 190


Console Python

Python

En utilisant une console Python, on peut effectuer des opérations


arithmétiques
I c

>>> 3+2
ELH
5
U
L MO
f E
chre
c A

H & H: Research and Training 20 / 190


Console Python

Python

En utilisant une console Python, on peut effectuer des opérations


arithmétiques
I c

>>> 3+2
ELH
5
U
L MO
f E
chre
c A
Ou des tests logiques

>>> 3+2>1+7
False

H & H: Research and Training 20 / 190


Variables

Python
Une variable ?

Un pointeur vers une zone mémoire

Permettant de stocker une ou plusieurs données


I c
EL
Pouvant avoir plusieurs valeurs différentes dans
H
un programme
U
L MO
h r e fE
A c
c

H & H: Research and Training 21 / 190


Variables

Python
Une variable ?

Un pointeur vers une zone mémoire

Permettant de stocker une ou plusieurs données


I c
EL
Pouvant avoir plusieurs valeurs différentes dans
H
un programme
U
L MO
h r e fE
A c de programmation fortement typé, mais
Python est un langage
c
Pas de type à préciser pour les variables

Une variable peut changer de type

Impossible de concaténer une chaı̂ne et un nombre sans conversion

H & H: Research and Training 21 / 190


Variables

Python

Caractéristiques d’une variable


I c
Son nom dans le programme ELH
U
L
Son type (déterminant souvent MO mémoire réservé pour la
l’espace
variable)
h r e fE
éA
c
c
Son identit

H & H: Research and Training 22 / 190


Variables Déclaration

Python

Pour déclarer une variable

>>> x = 2

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 23 / 190


Variables Déclaration

Python

Pour déclarer une variable

>>> x = 2

I c

ELH
Pour afficher une variable
U
>>> x
L MO
f E
hre
2

c
c A

H & H: Research and Training 23 / 190


Variables Déclaration

Python

Pour déclarer une variable

>>> x = 2

I c

ELH
Pour afficher une variable
U
>>> x
L MO
f E
hre
2

A c
c
Pour utiliser une variable

>>> x + 3
5

H & H: Research and Training 23 / 190


Variables Déclaration

Python

Pour déclarer plusieurs variables et leur affecter une même valeur

>>> a = b = c = 1

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 24 / 190


Variables Déclaration

Python

Pour déclarer plusieurs variables et leur affecter une même valeur

>>> a = b = c = 1

I c

L H
U prE
MO
Pour afficher les valeurs respectives des variables écédentes

>>> a, b, c
fE L
(1, 1, 1)
c h r e
c A

H & H: Research and Training 24 / 190


Variables Déclaration

Python

Pour déclarer plusieurs variables et leur affecter une même valeur

>>> a = b = c = 1

I c

L H
U prE
MO
Pour afficher les valeurs respectives des variables écédentes

>>> a, b, c
fE L
(1, 1, 1)
c h r e
c A
Pour déclarer plusieurs variables et leur affecter des valeurs différentes

>>> d, e, f = 1, 2, "bonjour"

H & H: Research and Training 24 / 190


Variables Type

Python

Une variable peut changer de type

I c

>>> x = ’bonjour’
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 25 / 190


Variables Type

Python

Une variable peut changer de type

I c

>>> x = ’bonjour’
ELH
U
L MO
f E
hre
Pour déterminer le type d’une variable
c
>>> type(x)
<class ’str’> c A

H & H: Research and Training 25 / 190


Variables Type

Python

Quelques types de variable selon la valeur affectée

Booléen : bool
I c

Numérique : int, float, complex
ELH
U
Texte : str
L MO
f E
hre
Binaires : bytes, bytearray, memoryview
c
c A

Multi-valeurs : array, list, tuple
Ensemble : set
Ensemble clé-valeur : dict

H & H: Research and Training 26 / 190


Variables Type

Python
Exemple avec les booléens
>>> type(True)
<class ’bool’>

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 27 / 190


Variables Type

Python
Exemple avec les booléens
>>> type(True)
<class ’bool’>

I c

ELH
Exemple avec les nombres réels OU
L M
>>> type(2.8)
<class ’float’> hre
fE
A c
c

H & H: Research and Training 27 / 190


Variables Type

Python
Exemple avec les booléens
>>> type(True)
<class ’bool’>

I c

ELH
Exemple avec les nombres réels OU
L M
>>> type(2.8)
<class ’float’> hre
fE
A c
c

Exemple avec les nombres complexes
>>> type(2j)
<class ’complex’>

H & H: Research and Training 27 / 190


Variables Type

Python

Pour récupérer le nom du type sous forme d’une chaı̂ne de


caractères I c

ELH
>>> val = 2
>>> val.__class__.__name__ MO
U
f E L
’int’
c h re
>>> type(val).__name__
’int’
c A

H & H: Research and Training 28 / 190


Variables Type

Python
Pour tester si une valeur est de certain type
>>> isinstance(True, bool)
True

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 29 / 190


Variables Type

Python
Pour tester si une valeur est de certain type
>>> isinstance(True, bool)
True

I c

ELH
U
MO
Exemple 2
>>> isinstance(2.5, int)
f E L
False
chre
c A

H & H: Research and Training 29 / 190


Variables Type

Python
Pour tester si une valeur est de certain type
>>> isinstance(True, bool)
True

I c

ELH
U
MO
Exemple 2
>>> isinstance(2.5, int)
f E L
False
chre
c A

Exemple 3
>>> isinstance(2, float)
False

H & H: Research and Training 29 / 190


Variables Type

Python

Le deuxième paramètre peut être un tuple


>>> isinstance(2.5, (int, float))
I c

True
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 30 / 190


Variables Type

Python

Le deuxième paramètre peut être un tuple


>>> isinstance(2.5, (int, float))
I c

True
ELH
U
L MO
f E
Exemple 2
chre
c A

>>> isinstance("bonjour", (int, float))
False

H & H: Research and Training 30 / 190


Variables Identité

Python

Identité d’une variable


I c
Constante unique pour chaque variable (objet)
H
ELvariables
O
Deux variables ayant la même identité U
= deux
partageant la même valeur L M

h r e f E d’identité en changeant de valeur


A c
Certaines variables changent
c
(immuable ou immutable) et certaines autres gardent leur identité
(muable ou mutable)

H & H: Research and Training 31 / 190


Variables Identité

Python

Exemple
I c

>>> x=2
ELH
>>> y=2 U
>>> x,y
L MO
f E
hre
(2, 2)
>>> id(x), id(y) c
c A

(1571223488, 1571223488)

H & H: Research and Training 32 / 190


Variables Opérations sur les variables

Python

Opérations sur les nombres


= : affectation
+ : addition I c

ELH
- : soustraction U
L MO
* : multiplication
f E
chre
c A
** : puissance
/

: division
// : division entière
% : reste de la division

H & H: Research and Training 33 / 190


Variables Opérations sur les variables

Python

Exemples
>>> 5+2
7
>>> 5* 2
I c

10
ELH
U
MO
>>> 5/2
2.5
f E L
hre
>>> 5//2
2
c
>>>
25
5**2
c A

>>> 5%2
1
>>>

H & H: Research and Training 34 / 190


Variables Opérations sur les variables

Python

Quelques opérations sur les variables numériques


i += 2 ⇒ i = i + 2
i -= 2 ⇒ i = i - 2 I c

ELH
i *= 2 ⇒ i = i * 2 U
L MO
i /= 2 ⇒ i = i / 2
f E
A c
i %= 2 ⇒ i = i % 2 hre
c
i //=
2 ⇒ i = i // 2
i **= 2 ⇒ i = i ** 2
...

H & H: Research and Training 35 / 190


Variables Opérations sur les variables

Python

I c

Exercice
EL H
U
O le contenu de deux
Mpermuter
Écrire un script Python qui permet de
L
h r e f Eème.
variables dans utiliser une troisi

A c
c

H & H: Research and Training 36 / 190


Variables Opérations sur les variables

Python
Première solution

>>> a += b
>>> a=2
>>> b=3
>>> a+=b
I c

>>>
>>>
b=a-b
a-=b
ELH
U
MO
>>> a,b
(3, 2)
f E L
chre
c A

H & H: Research and Training 37 / 190


Variables Opérations sur les variables

Python
Première solution

>>> a += b
>>> a=2
>>> b=3
>>> a+=b
I c

>>>
>>>
b=a-b
a-=b
ELH
U
MO
>>> a,b
(3, 2)
f E L
chre
c A

Deuxième solution (on peut également entourer a,b par des () ou [])

>>> a=2
>>> b=3
>>> a,b = b,a
>>> a,b
(3, 2)

H & H: Research and Training 37 / 190


Variables Opérations sur les variables

Considérons les deux chaı̂nes de caractères suivantes

str1, str2 = ’bon’, "jour"

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 38 / 190


Variables Opérations sur les variables

Considérons les deux chaı̂nes de caractères suivantes

str1, str2 = ’bon’, "jour"

Utilisons l’opérateur + pour concaténer deux chaı̂nes de caractère

>>> str3 = str1 + str2


I c

>>> str3
’bonjour’
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 38 / 190


Variables Opérations sur les variables

Considérons les deux chaı̂nes de caractères suivantes

str1, str2 = ’bon’, "jour"

Utilisons l’opérateur + pour concaténer deux chaı̂nes de caractère

>>> str3 = str1 + str2


I c

>>> str3
’bonjour’
ELH
U
L MO
f E
hre
Utilisons l’opérateur * pour répéter un motif plusieurs fois

c
c A
>>> str3 * 4

’bonjourbonjourbonjourbonjour’

H & H: Research and Training 38 / 190


Variables Opérations sur les variables

Considérons les deux chaı̂nes de caractères suivantes

str1, str2 = ’bon’, "jour"

Utilisons l’opérateur + pour concaténer deux chaı̂nes de caractère

>>> str3 = str1 + str2


I c

>>> str3
’bonjour’
ELH
U
L MO
f E
hre
Utilisons l’opérateur * pour répéter un motif plusieurs fois

c
c A
>>> str3 * 4

’bonjourbonjourbonjourbonjour’

Multiplier une chaı̂ne de caractères par une deuxième chaı̂ne déclenche une erreur

>>> str3 * "4"


TypeError: can’t multiply sequence by non-int of type ’str’

H & H: Research and Training 38 / 190


Variables Opérations sur les variables

Python
Pour créer une chaı̂ne de caractères dont la valeur est définie sur
plusieurs lignes
>>> msg=’hello\
... world’
>>> msg I c

’helloworld’
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 39 / 190


Variables Opérations sur les variables

Python
Pour créer une chaı̂ne de caractères dont la valeur est définie sur
plusieurs lignes
>>> msg=’hello\
... world’
>>> msg I c

’helloworld’
ELH
U
L MO
f E
reles """
A c h
On peut également utiliser

c
>>> msg2="""bonjour
... tout
... le
... monde"""
>>> msg2
’bonjour\ntout\nle\nmonde’

H & H: Research and Training 39 / 190


Variables Opérations sur les variables

Python

Pour accéder à un caractère à la position 2 (premier caractère


d’indice 0)
I c

>>> str3[2]
ELH
’n’
U
L MO
f E
chre
c A

H & H: Research and Training 40 / 190


Variables Opérations sur les variables

Python

Pour accéder à un caractère à la position 2 (premier caractère


d’indice 0)
I c

>>> str3[2]
ELH
’n’
U
L MO
f E
chre
c A
Pour extraire les caractères entre la position 2 et 4

>>> str3[2:4]
’nj’

H & H: Research and Training 40 / 190


Variables Opérations sur les variables

Python
Pour extraire les caractères de la position 2 jusqu’à la fin
>>> str3[2:]
’njour’

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 41 / 190


Variables Opérations sur les variables

Python
Pour extraire les caractères de la position 2 jusqu’à la fin
>>> str3[2:]
’njour’

I c
Eà L H
O U
Pour extraire les caractères du début jusqu’ la position 4
>>> str3[:4] L M
’bonj’
ref E
c h
c A

H & H: Research and Training 41 / 190


Variables Opérations sur les variables

Python
Pour extraire les caractères de la position 2 jusqu’à la fin
>>> str3[2:]
’njour’

I c
Eà L H
O U
Pour extraire les caractères du début jusqu’ la position 4
>>> str3[:4] L M
’bonj’
ref E
c h
c A
Pour extraire les caractères entre la position 2 et 4 en
commençant de la fin
>>> str3[-4:-2]
’jo’

H & H: Research and Training 41 / 190


Variables Opérations sur les variables

Python
Pour récupérer la taille d’une chaı̂ne de caractères
>>> len(str3)
7

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 42 / 190


Variables Opérations sur les variables

Python
Pour récupérer la taille d’une chaı̂ne de caractères
>>> len(str3)
7

I c

E L H
U
Pour remplacer une partie de la chaı̂ne par une autre

L
>>> str3.replace(’jour’,’soir’) MO
’bonsoir’
h r e fE
A c
c

H & H: Research and Training 42 / 190


Variables Opérations sur les variables

Python
Pour récupérer la taille d’une chaı̂ne de caractères
>>> len(str3)
7

I c

E L H
U
Pour remplacer une partie de la chaı̂ne par une autre

L
>>> str3.replace(’jour’,’soir’) MO
’bonsoir’
h r e fE
A c
c
Pour découper une chaı̂ne de caractère selon un séparateur
précisé
>>> str3.split(’o’)
[’b’, ’nj’, ’ur’]

H & H: Research and Training 42 / 190


Variables Opérations sur les variables

Quelques méthodes sur les chaı̂nes de caractères

capitalize() : convertit la première lettre du premier mot en majuscule

title() : convertit la première lettre de chaque mot en majuscule

index(x) : retourne l’indice de la première occurrence de x dans la chaı̂ne, erreur sinon.

I c

find(x) : retourne l’indice de la première occurrence de x dans la chaı̂ne, -1 sinon.

ELH
U
contains() : retourne true si la chaı̂ne contient x, false sinon.

L MO
upper() : convertit une chaı̂ne de caractères en majuscule

f E
hre
lower() : convertit une chaı̂ne de caractères en minuscule
c
c A
strip() : supprime les espaces au début et à la fin

startswith(x) : retourne true si la chaı̂ne commence par x, false sinon.

endswith(x) : retourne true si la chaı̂ne se termine par x, false sinon.

count(x) : retourne le nombre d’occurrence de x dans la chaı̂ne

...

H & H: Research and Training 43 / 190


Variables Opérations sur les variables

Python

Les méthodes isX() : retourne un booléen

islower() : vérifie si tous les caractères d’une chaı̂nes sont en minuscule

I c
H
EL sont alphanumériques
isupper() : vérifie si tous les caractères d’une chaı̂nes sont en majuscule

isalnum() : vérifie si tous les caractères O Uchaı̂nes


d’une

isalpha() : vérifie si tous lesE L M


rsietousf les caractères d’une chaı̂nes sont numériques
caractères d’une chaı̂nes sont alphabétiques

isnumeric() : vc h
c A
érifie

isspace() : vérifie si tous les caractères d’une chaı̂nes sont des espaces

...

H & H: Research and Training 44 / 190


Variables Opérations sur les variables

Python
Pour certains opérateurs, ceci génère une erreur

>>> 2 + ’3’
Traceback (most recent call last):
File "<stdin>", line 1, in <module>

c

TypeError: unsupported operand type(s) for +: ’int’ and ’str’
I
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 45 / 190


Variables Opérations sur les variables

Python
Pour certains opérateurs, ceci génère une erreur

>>> 2 + ’3’
Traceback (most recent call last):
File "<stdin>", line 1, in <module>

c

TypeError: unsupported operand type(s) for +: ’int’ and ’str’
I
ELH
U
MO
Pour additionner un nombre te une chaı̂ne de caractère, on peut convertir la chaı̂ne en
L
entier
f E
>>> 2 + int(’3’)
chre
c A
5

H & H: Research and Training 45 / 190


Variables Opérations sur les variables

Python
Pour certains opérateurs, ceci génère une erreur

>>> 2 + ’3’
Traceback (most recent call last):
File "<stdin>", line 1, in <module>

c

TypeError: unsupported operand type(s) for +: ’int’ and ’str’
I
ELH
U
MO
Pour additionner un nombre te une chaı̂ne de caractère, on peut convertir la chaı̂ne en
L
entier
f E
>>> 2 + int(’3’)
chre
c A
5

Pour faire la concaténation

>>> str(2) + ’3’


’23’

H & H: Research and Training 45 / 190


Variables Opérations sur les variables

Python

Trois fonctions de conversion en Python

float() : convertit en réel la valeur passée en paramètre si elle


est numérique, une erreur sera générée sinon.
I c
E
int() : convertit en entier la valeur passée L H
en paramètre si elle
est numérique, une erreur sera génO U
L M érée sinon.
e f E de caractère la valeur passée en
str() : convertir en chaı̂ne
h r
paramètre
A c
c
: retourne False si x contient le nombre 0, [], (), {} ou
bool(x)
False, True sinon.
...

H & H: Research and Training 46 / 190


Variables Suppression

Python

Pour supprimer une variable


>>> del x
I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 47 / 190


Variables Suppression

Python

Pour supprimer une variable


>>> del x
I c
ELH
U
O ée génère une erreur
L Msupprim
Demander la variable d’une variable

h r e fE
>>> x
A c recent call last):
c
Traceback (most
File "<stdin>", line 1, in <module>
NameError: name ’x’ is not defined

H & H: Research and Training 47 / 190


Lecture d’une saisie

Python

Pour lire une saisie de console (une chaı̂ne de caractère)


>>> x = input()

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 48 / 190


Lecture d’une saisie

Python

Pour lire une saisie de console (une chaı̂ne de caractère)


>>> x = input()

I c

E L H
On peut ajouter un message indicatifO U
L M
>>> x = input(’Quel est
r e f E votre nom ?\n’)

A c h
c

H & H: Research and Training 48 / 190


Lecture d’une saisie

Python

Pour lire une saisie de console (une chaı̂ne de caractère)


>>> x = input()

I c

E L H
On peut ajouter un message indicatifO U
L M
>>> x = input(’Quel est
r e f E votre nom ?\n’)

A c h
c
Pour lire une saisie numérique (entier par exemple)
>>> num1 = int(input(’saisir un nombre’))

H & H: Research and Training 48 / 190


Fichiers de code Python

Python

Fichiers de code Python : idée


I c
E
Créer un projet Python (dossier contenant des
H
L fichiers avec
U
l’extension .py)
L MO
r e f Ele code Python
Utiliser un IDE pour écrire
h
A c Python pour exécuter le contenu du projet
c
Utiliser la console

H & H: Research and Training 49 / 190


Fichiers de code Python

Python

Quel IDE (Environnement de développement intégré) ?

I c

PyCharm (Pour télécharger :
ELH
U
https://www.jetbrains.com/fr-fr/pycharm/download/#section=windows)

Eclipse
L MO
f E
hre
Visual Studio Code (À ne pas confondre avec Visual Studio)
c
...
c A

H & H: Research and Training 50 / 190


Fichiers de code Python

Python

Quelques raccourcis PyCharm


I c

Pour formater le code : Ctrl Alt L
ELH
U
Pour commenter : Ctrl /
L MO
f E
hre
Pour sélectionner tous les mots selon un nom : Ctrl Alt
Shift J
A c
c
éder au code source d’un composant prédéfini : Ctrl b
Pour acc

H & H: Research and Training 51 / 190


Fichiers de code Python

Python

Démarche

Créez un projet cours-python

Dans cours-python, créez un fichier main.py


I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 52 / 190


Fichiers de code Python

Python

Démarche

Créez un projet cours-python

Dans cours-python, créez un fichier main.py


I c

ELH
U
L MO
Contenu de main.py
f E
msg = "Hello World"
chre
print(msg)
c A

H & H: Research and Training 52 / 190


Fichiers de code Python

Python

Démarche

Créez un projet cours-python

Dans cours-python, créez un fichier main.py


I c

ELH
U
L MO
Contenu de main.py
f E
msg = "Hello World"
chre
print(msg)
c A

Pour exécuter, cliquez sur le triangle vert (en haut à droite)

H & H: Research and Training 52 / 190


Formatage de chaı̂ne de caractère

Python

Exercice I c
H
ELde saisir deux
U
MO comme suit : la somme
Écrire un script Python qui demande à l’utilisateur

de 2 et 3 est : 5. 2eetf 3E
L
nombres et affiche le résultat de la somme
étant des valeurs saisies par
c h r
l’utilisateur.
c A

H & H: Research and Training 53 / 190


Formatage de chaı̂ne de caractère

Python

Une première solution consiste à faire


x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
I c

resultat = x + y
ELH
U
MO
print(’la somme de’, x, ’et’, y, ’est :’, resultat)

f E L
c hre
c A

H & H: Research and Training 54 / 190


Formatage de chaı̂ne de caractère

Python

Une première solution consiste à faire


x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
I c

resultat = x + y
ELH
U
MO
print(’la somme de’, x, ’et’, y, ’est :’, resultat)

f E L
c hre
Remarque c A

Python ajoute un espace après chaque paramètre de la fonction
print().

H & H: Research and Training 54 / 190


Formatage de chaı̂ne de caractère

Python

c

Pour modifier le séparateur, on utilise l’option sep (ici c’est -)
I
x = int(input(’Première valeur’))
EL H
U
MO
y = int(input(’Deuxième valeur’))
L
fx,E’et’, y, ’est :’, resultat,
resultat = x + y
r
print(’la somme de’,
sep="-") Ac h e
c

H & H: Research and Training 55 / 190


Formatage de chaı̂ne de caractère

Python
Solution avec le formatage de la chaı̂ne de sortie en utilisant %
comme en langage C
x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
I c

resultat = ’la somme de
H
%d et %d est : %d’
EL
print(resultat % (x, y, x + y))
U
L MO
f E
c hre
c A

H & H: Research and Training 56 / 190


Formatage de chaı̂ne de caractère

Python
Solution avec le formatage de la chaı̂ne de sortie en utilisant %
comme en langage C
x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
I c

resultat = ’la somme de
H
%d et %d est : %d’
EL
print(resultat % (x, y, x + y))
U
L MO
f E
c hre
Autres options c A

%s pour str
%f pour float
...

H & H: Research and Training 56 / 190


Formatage de chaı̂ne de caractère

Python

Solution avec le formatage de la chaı̂ne de sortie (disponible


depuis Python 2.6)
x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
I c

resultat = ’la somme de {} et {} est : {}’
ELH
U
MO
print(resultat.format(x, y, x + y))

f E L
c hre
c A

H & H: Research and Training 57 / 190


Formatage de chaı̂ne de caractère

Python

Solution avec le formatage de la chaı̂ne de sortie (disponible


depuis Python 2.6)
x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
I c

resultat = ’la somme de {} et {} est : {}’
ELH
U
MO
print(resultat.format(x, y, x + y))

f E L
c hre
3.6)
c A
Un raccourci de l’écriture précédente (disponible depuis Python

x = int(input(’Première valeur’))
y = int(input(’Deuxième valeur’))
print(f’la somme de {x} et {y} est : {x + y}’)

H & H: Research and Training 57 / 190


Commentaires

Python

Commentaire
texte ignoré par le compilateur

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 58 / 190


Commentaires

Python

Commentaire
texte ignoré par le compilateur

I c

ELH
U
MO
Syntaxe
# le texte suivant sera ignoré
f E L
chre
c A

H & H: Research and Training 58 / 190


Commentaires

Python

Commentaire
texte ignoré par le compilateur

I c

ELH
U
MO
Syntaxe
# le texte suivant sera ignoré
f E L
chre
c A

Remarque
Python n’a pas de symbole particulier pour les commentaires
multi-lignes

H & H: Research and Training 58 / 190


Commentaires

Python

Commentaire de documentation (DocString)

pouvant être récupéré


pouvant être multi-lignes I c

EL H
U
MO
généralement attaché à un élément Python

fE L
c h r e
c A

H & H: Research and Training 59 / 190


Commentaires

Python

Commentaire de documentation (DocString)

pouvant être récupéré


pouvant être multi-lignes I c

EL H
U
MO
généralement attaché à un élément Python

fE L
c h r e
Syntaxe c A
"""message sur plusieurs lignes
attaché à un élément
décrivant un élément Python"""

H & H: Research and Training 59 / 190


Structures conditionnelles

Python

I c

Structures conditionnelles
E LH
U
MO
if ... [[elif ...] else ...]
L
e f E en Python
Pas de switch ... case
h r
A c
c

H & H: Research and Training 60 / 190


Structures conditionnelles if

Python

Exécuter si une condition est vraie


if (condition[s]):
# instruction[s]
I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 61 / 190


Structures conditionnelles if

Python

Exécuter si une condition est vraie


if (condition[s]):
# instruction[s]
I c

ELH
U
L MO
Remarques
f E
A c hre
Les parenthèses ne sont pas obligatoires
c
L’indentation est obligatoire pour les instructions de if
Pour les conditions, on utilise les opérateurs de comparaison

H & H: Research and Training 61 / 190


Structures conditionnelles if

Python

Exemple
x = 10
I c

if (x > 0):
ELH
print(str(x) + " est positif")
U
L MO
f E
c hre
c A

H & H: Research and Training 62 / 190


Structures conditionnelles if

Python

Exemple
x = 10
I c

if (x > 0):
ELH
print(str(x) + " est positif")
U
L MO
f E
c hre
c A
One-line if
x = 10
if (x > 0): print(str(x) + " est positif")

H & H: Research and Training 62 / 190


Structures conditionnelles if

Python

Opérateurs de comparaison

== : pour tester l’égalité


I c

ELH
!= : pour tester l’inégalité
U
> : supérieur à L MO
f E
c
< : inférieur à
A hre
c
érieur ou égal à
>= : sup
<= : inférieur ou égal à

H & H: Research and Training 63 / 190


Structures conditionnelles if ... else

Python

Exécuter un premier bloc si une condition est vraie, un deuxième


I c

sinon (le bloc else)
ELH
U
if (condition[s]):
L MO
# instruction[s]
f E
else:
c hre
c A
# instruction[s]

H & H: Research and Training 64 / 190


Structures conditionnelles if ... else

Exemple
x = -10
if (x > 0):
print(str(x) + " est positif")
else:
print(str(x) + " est négatif")

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 65 / 190


Structures conditionnelles if ... else

Exemple
x = -10
if (x > 0):
print(str(x) + " est positif")
else:
print(str(x) + " est négatif")

I c

One-line if else
ELH
U
MO
print(str(x) + " est positif") if (x > 0) else print(str(x) + " est né
gatif")

f E L
c hre
c A

H & H: Research and Training 65 / 190


Structures conditionnelles if ... else

Exemple
x = -10
if (x > 0):
print(str(x) + " est positif")
else:
print(str(x) + " est négatif")

I c

One-line if else
ELH
U
MO
print(str(x) + " est positif") if (x > 0) else print(str(x) + " est né
gatif")

f E L
c hre
Ou en plus simple
c A

print(str(x) + (" est positif" if (x > 0) else " est négatif"))

H & H: Research and Training 65 / 190


Structures conditionnelles if ... else

Exemple
x = -10
if (x > 0):
print(str(x) + " est positif")
else:
print(str(x) + " est négatif")

I c

One-line if else
ELH
U
MO
print(str(x) + " est positif") if (x > 0) else print(str(x) + " est né
gatif")

f E L
c hre
Ou en plus simple
c A

print(str(x) + (" est positif" if (x > 0) else " est négatif"))

Ou en utilisant un opérateur ternaire


print(str(x) + (" est négatif", " est positif")[x > 0])

H & H: Research and Training 65 / 190


Structures conditionnelles if ... elif ... else

Python

On peut enchaı̂ner les conditions avec elif (et avoir un troisième


bloc voire ... un nième)
I c

if (condition[s]):
ELH
U
MO
# instruction[s]
elif (condition[s]):
f E L
hre
# instruction[s]
c
c A
...
else:
# instruction[s]

H & H: Research and Training 66 / 190


Structures conditionnelles if ... elif ... else

Exemple

x = 0
if (x > 0):
print(str(x) + " est positif")
elif (x == 0):
print(str(x) + " est nul")
else:
print(str(x) + " est négatif")
I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 67 / 190


Structures conditionnelles if ... elif ... else

Exemple

x = 0
if (x > 0):
print(str(x) + " est positif")
elif (x == 0):
print(str(x) + " est nul")
else:
print(str(x) + " est négatif")
I c

ELH
U
One-line if elif else
L MO
f E
hre
x = 0

c
print(str(x) + " est positif") if (x > 0) else print(str(x) + " est nul

c A
") if x == 0 else print(str(x) + " est négatif")

H & H: Research and Training 67 / 190


Structures conditionnelles if ... elif ... else

Exemple

x = 0
if (x > 0):
print(str(x) + " est positif")
elif (x == 0):
print(str(x) + " est nul")
else:
print(str(x) + " est négatif")
I c

ELH
U
One-line if elif else
L MO
f E
hre
x = 0

c
print(str(x) + " est positif") if (x > 0) else print(str(x) + " est nul

c A
") if x == 0 else print(str(x) + " est négatif")

Ou en plus simple

x = 0
print(str(x) + (" est positif" if (x > 0) else " est nul" if x == 0
else " est négatif"))

H & H: Research and Training 67 / 190


Structures conditionnelles if ... elif ... else

Python

Opérateurs logiques
and : et
I c

or : ou
ELH
U
not : non
L MO
f E
c hre
c A

H & H: Research and Training 68 / 190


Structures conditionnelles if ... elif ... else

Python

Opérateurs logiques
and : et
I c

or : ou
ELH
U
not : non
L MO
f E
c hre
c A

Tester plusieurs conditions (en utilisant des opérateurs logiques)
if (condition1 and condition2 or condition3):
# instructions
[else ...]

H & H: Research and Training 68 / 190


Structures conditionnelles if ... elif ... else

Python

Exercice
I c
Écrire un script Python qui EL H
U
Ovaleurs numériques
demande à l’utilisateur de saisirM
L deux
f Ede la multiplication sans calculer le
c h e
affiche le signe du rrésultat
produit
c A

H & H: Research and Training 69 / 190


Structures conditionnelles pass

Python

Si, pour certains conditions, on n’a rien à faire, on peut utiliser


pass
I c

x = 0
ELH
U
MO
if (x > 0):
print(str(x) + " est positif")
f E L
hre
elif (x == 0):
c
c A
pass
else:
print(str(x) + " est négatif")

H & H: Research and Training 70 / 190


Structures itératives

Python

Structures itératives I c
H
EouLinconnus
U
while : pour un nombre d’itérations connu
O
L Mconnu
h r e fE
for : pour un nombre d’itérations

A
Pas de do ... c while en Python
c

H & H: Research and Training 71 / 190


Structures itératives while

Python

Boucle while : à chaque itération on teste si la condition est


vraie avant d’accéder aux traitements
I c

ELH
while condition[s] :
U
# instruction[s]
L MO
f E
chre
c A

H & H: Research and Training 72 / 190


Structures itératives while

Python

Boucle while : à chaque itération on teste si la condition est


vraie avant d’accéder aux traitements
I c

ELH
while condition[s] :
U
# instruction[s]
L MO
f E
chre
c A

Attention aux boucles infinies, vérifier que la condition d’arrêt sera bien
atteinte après un certain nombre d’itérations.

H & H: Research and Training 72 / 190


Structures itératives while

Python

Exemple
i = 0
while i < 5:
print(i)
I c

i += 1
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 73 / 190


Structures itératives while

Python

Exemple
i = 0
while i < 5:
print(i)
I c

i += 1
ELH
U
L MO
f E
Le résultat est
chre
0 c A

1
2
3
4

H & H: Research and Training 73 / 190


Structures itératives while

Python

Pour tout afficher sur une seule ligne


i = 0
I c

while i < 5:
ELH
print(i, end=" ")
U
i += 1
L MO
f E
chre
c A

H & H: Research and Training 74 / 190


Structures itératives while

Python

Pour tout afficher sur une seule ligne


i = 0
I c

while i < 5:
ELH
print(i, end=" ")
U
i += 1
L MO
f E
chre
Le résultat est c A

0 1 2 3 4

H & H: Research and Training 74 / 190


Structures itératives while ... break

Python

Exemple avec break


i = 0
while i < 5:
print(i)
I c

if i == 2:
ELH
U
MO
break
i += 1
f E L
chre
c A

H & H: Research and Training 75 / 190


Structures itératives while ... break

Python

Exemple avec break


i = 0
while i < 5:
print(i)
I c

if i == 2:
ELH
U
MO
break
i += 1
f E L
chre
cest A
Le résultat
0
1
2

H & H: Research and Training 75 / 190


Structures itératives while ... continue

Python
Exemple avec continue
i = 0
while i < 5:
i += 1
I c

if i == 2:
ELH
continue
U
print(i)
L MO
f E
chre
c A

H & H: Research and Training 76 / 190


Structures itératives while ... continue

Python
Exemple avec continue
i = 0
while i < 5:
i += 1
I c

if i == 2:
ELH
continue
U
print(i)
L MO
f E
chre
Le résultat est c A

1
3
4
5

H & H: Research and Training 76 / 190


Structures itératives while ... else

Python

while ... else


I c
H
ElaLcondition de while
U
La clause else n’est exécutée que lorsque
devient fausse.
L MO
r
Si on sort de la boucle
h e fouEsi une exception est levée, le bloc else
ne sera pasA excécutée.
c

H & H: Research and Training 77 / 190


Structures itératives while ... else

Python
Exemple avec while ... else

i = 0
while i < 5:
i += 1
print(i)
I c

else:
ELH
print("i est égal à 5")
U
L MO
f E
chre
c A

H & H: Research and Training 78 / 190


Structures itératives while ... else

Python
Exemple avec while ... else

i = 0
while i < 5:
i += 1
print(i)
I c

else:
ELH
print("i est égal à 5")
U
L MO
f E
Le résultat est
chre
1 c A

2
3
4
5
i est égal à 5

H & H: Research and Training 78 / 190


Structures itératives for

Python
Boucle for

for elt in iterable:


# instruction[s]

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 79 / 190


Structures itératives for

Python
Boucle for

for elt in iterable:


# instruction[s]

I c

Une boucle for permet d’itérer sur les structures suivantes
ELH
U
List
L MO
f E
hre
Tuple

c
c A
Set

Dictionary
String

Range

Generator expression

H & H: Research and Training 79 / 190


Structures itératives for

Python
Pour parcourir une chaı̂ne de caractères
chaine = "bonjour"

for elt in chaine:


print(elt) I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 80 / 190


Structures itératives for

Python
Pour parcourir une chaı̂ne de caractères
chaine = "bonjour"

for elt in chaine:


print(elt) I c

ELH
U
L MO
Le résultat est
f E
chre
c A
b
o
n

j
o
u
r

H & H: Research and Training 80 / 190


Structures itératives for

Python

Et si on a besoin d’afficher des valeurs (de 0 à 4 par exemple)


sans avoir d’itérable, on utilise la fonction range
for i in range(5):
I c

print(i)
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 81 / 190


Structures itératives for

Python

Et si on a besoin d’afficher des valeurs (de 0 à 4 par exemple)


sans avoir d’itérable, on utilise la fonction range
for i in range(5):
I c

print(i)
ELH
U
L MO
f E
hre
Le résultat est
c
0
1 c A

2
3
4

H & H: Research and Training 81 / 190


Structures itératives for

Python

On peut aussi modifier la valeur initiale (par défaut 0)


for i in range(2, 5):
I c

print(i)
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 82 / 190


Structures itératives for

Python

On peut aussi modifier la valeur initiale (par défaut 0)


for i in range(2, 5):
I c

print(i)
ELH
U
L MO
f E
hre
Le résultat est
c
2
3
c A

4

H & H: Research and Training 82 / 190


Structures itératives for

Python

Il est possible de modifier le pas (par défaut 1)


for i in range(0, 5, 2):
I c

print(i)
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 83 / 190


Structures itératives for

Python

Il est possible de modifier le pas (par défaut 1)


for i in range(0, 5, 2):
I c

print(i)
ELH
U
L MO
f E
hre
Le résultat est
c
0
2
c A

4

H & H: Research and Training 83 / 190


Structures itératives for

Python

Comme pour while, il est possible d’utiliser


I c

pass
ELH
U
continue
L MO
f E
break
chre
else c A

H & H: Research and Training 84 / 190


Structures itératives for-one-line

Python
Python nous permet de stocker le résultat d’une boucle for dans
une variable (for-one-line)
carre = [elt ** 2 for elt in range(5)]

I c

print(carre)
ELH
# affiche [0, 1, 4, 9, 16]
U
L MO
f E
chre
c A

H & H: Research and Training 85 / 190


Structures itératives for-one-line

Python
Python nous permet de stocker le résultat d’une boucle for dans
une variable (for-one-line)
carre = [elt ** 2 for elt in range(5)]

I c

print(carre)
ELH
# affiche [0, 1, 4, 9, 16]
U
L MO
f E
A c hre
Dans un for-one-line, on peut utiliser un if
carre =
c
[elt ** 2 for elt in range(5) if elt % 2 ==
0]

print(carre)
# affiche [0, 4, 16]

H & H: Research and Training 85 / 190


Structures itératives for-one-line

Python

On peut aussi imbriquer les for

I c

voitures = ["peugeot", "fiat"]
E L H
U
L MO
lettres = [x * 2 for elt in voitures for x in elt]

print(lettres)
h r e fE
A c ’ee’, ’uu’, ’gg’, ’ee’, ’oo’, ’tt’,
# affiche [’pp’,
’ff’, c’ii’, ’aa’, ’tt’]

H & H: Research and Training 86 / 190


Structures itératives for ... break ... else

Python

Exercice
I c
Étant donnée la variable suivante : E LH
U
valeurs = [elt ** 2 for elt
L MOin range(5)]
En utilisant une boucleffor
r e E
DéterminezA si c
h
cette variable contient un nombre pair
c

H & H: Research and Training 87 / 190


Structures itératives for ... break ... else

Python

Solution
valeurs = [elt ** 2 for elt in range(5)]
I c

trouve = False
ELH
U
for elt in valeurs:
L MO
if elt % 2 == 0:
f E
trouve = True
chre
break
c A

print("oui" if trouve else "non")

H & H: Research and Training 88 / 190


Structures itératives for ... break ... else

Python

Le code précédent peut être simplifié en supprimant la variable


trouve et en éliminant la deuxième structure conditionnelle
I c

valeurs = [elt ** 2 for elt in range(5)]
ELH
U
for elt in valeurs:
L MO
if elt % 2 == 0:
f E
print("oui")
chre
else:
break
c A

print("non")

H & H: Research and Training 89 / 190


Structures itératives for ... break ... else

Python

for ... break ... else


I c
H
ElaLboucle for, le else
U
Si le compilateur rencontre un break dans
ne sera pas exécuté.
L MO
r
S’il ne rencontre pas
h e f E dans la boucle for, la partie else
break
A
sera exécutée.c
c

H & H: Research and Training 90 / 190


Collections (tableaux dynamiques)

Python

Les collections en Python

List : collection ordonnée (selon l’ordre d’insertion) acceptant


valeurs dupliquées et types différents
I c
Tuple : collection ordonnée (selon l’ordreE L H
d’insertion) de
constante acceptant valeurs dupliquO U
L M ées et types différents

r e f E
Set : collection non-ordonnée (selon l’ordre d’insertion) et
h
Acées les types différents et n’autorisant pas les
non-indexée acceptant
cdupliqu
valeurs
Dictionary : collection non-ordonnée acceptant les valeurs
dupliquées avec des clés personnalisées

H & H: Research and Training 91 / 190


Collections (tableaux dynamiques) List

Python
Pour déclarer une liste, on utilise les []

liste = [2, 3, 8, 5]

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 92 / 190


Collections (tableaux dynamiques) List

Python
Pour déclarer une liste, on utilise les []

liste = [2, 3, 8, 5]

c

Pour accéder à un élément selon son indice (premier élément d’indice 0)
I
print(liste[1])
ELH
# affiche 3
U
L MO
f E
c hre
c A

H & H: Research and Training 92 / 190


Collections (tableaux dynamiques) List

Python
Pour déclarer une liste, on utilise les []

liste = [2, 3, 8, 5]

c

Pour accéder à un élément selon son indice (premier élément d’indice 0)
I
print(liste[1])
ELH
# affiche 3
U
L MO
f E
hre
Pour accéder au dernier élément d’une liste
c
print(liste[-1])
# affiche 5 c A

H & H: Research and Training 92 / 190


Collections (tableaux dynamiques) List

Python
Pour déclarer une liste, on utilise les []

liste = [2, 3, 8, 5]

c

Pour accéder à un élément selon son indice (premier élément d’indice 0)
I
print(liste[1])
ELH
# affiche 3
U
L MO
f E
hre
Pour accéder au dernier élément d’une liste
c
print(liste[-1])
# affiche 5 c A

Pour accéder à un élément selon son indice en commençant par la fin

print(liste[-2])
# affiche 8

H & H: Research and Training 92 / 190


Collections (tableaux dynamiques) List

Python

Accéder à un élément via un indice inexistant génère une erreur


print(list[10])
Traceback (most recent call last):
I c

File "c:/Users/elmou/Desktop/cours-python/main.py"
ELH
, line 2, in <module>
U
print(list[10])
L MO
IndexError: list index out of range
f E
c hre
c A

H & H: Research and Training 93 / 190


Collections (tableaux dynamiques) List

Python

Accéder à un élément via un indice inexistant génère une erreur


print(list[10])
Traceback (most recent call last):
I c

File "c:/Users/elmou/Desktop/cours-python/main.py"
ELH
, line 2, in <module>
U
print(list[10])
L MO
IndexError: list index out of range
f E
A c hre
c
Pour déterminer la taille d’une liste
print(len(liste))
# affiche 4

H & H: Research and Training 93 / 190


Collections (tableaux dynamiques) List

Python

Pour extraire une sous-liste


print(liste[1:3])
I c

# affiche [3, 8]
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 94 / 190


Collections (tableaux dynamiques) List

Python

Pour extraire une sous-liste


print(liste[1:3])
I c

# affiche [3, 8]
ELH
U
L MO
f E
hre
Pour tester si un élément est dans la liste
c
if 3 in liste:
print(’oui’) c A

# affiche oui

H & H: Research and Training 94 / 190


Collections (tableaux dynamiques) List

Python
Il est possible d’additionner (ou fusionner) les listes
liste += [1, 6]
print(liste)
# affiche [2, 3, 8, 5, 1, 6]

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 95 / 190


Collections (tableaux dynamiques) List

Python
Il est possible d’additionner (ou fusionner) les listes
liste += [1, 6]
print(liste)
# affiche [2, 3, 8, 5, 1, 6]

I c

ELH
U
MO
Ou
liste = [*liste, 1, 6]
f E L
hre
print(liste)
# affiche [2, 3, 8, 5, 1, 6]
c
c A

H & H: Research and Training 95 / 190


Collections (tableaux dynamiques) List

Python
Il est possible d’additionner (ou fusionner) les listes
liste += [1, 6]
print(liste)
# affiche [2, 3, 8, 5, 1, 6]

I c

ELH
U
MO
Ou
liste = [*liste, 1, 6]
f E L
hre
print(liste)
# affiche [2, 3, 8, 5, 1, 6]
c
c A

Sans l’opérateur *, le résultat est différent
liste = [liste, 1, 6]
print(liste)
# affiche [[2, 3, 8, 5], 1, 6]

H & H: Research and Training 95 / 190


Collections (tableaux dynamiques) List

Python

Pour ajouter un nouvel élément à la liste (à la fin)


liste.append(9)
print(liste)
I c

# affiche [2, 3, 8, 5, 9]
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 96 / 190


Collections (tableaux dynamiques) List

Python

Pour ajouter un nouvel élément à la liste (à la fin)


liste.append(9)
print(liste)
I c

# affiche [2, 3, 8, 5, 9]
ELH
U
L MO
Pour ajouter un nouvelre f E
c h élément à la liste à un emplacement précis

c A 6)
liste.insert(2,
print(liste)
# affiche [2, 3, 6, 8, 5]

H & H: Research and Training 96 / 190


Collections (tableaux dynamiques) List

Python

Pour supprimer le dernier élément de la liste, on utilise pop


liste.pop()
print(liste)
I c

# affiche [2, 3, 8]
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 97 / 190


Collections (tableaux dynamiques) List

Python

Pour supprimer le dernier élément de la liste, on utilise pop


liste.pop()
print(liste)
I c

# affiche [2, 3, 8]
ELH
U
L MO
f E
A c hre
Pour supprimer un élément de la liste selon la valeur, on utilise
remove. Si l’élément n’existe pas, une exception sera levée.
c
liste.remove(8)
print(liste)
# affiche [2, 3, 5]

H & H: Research and Training 97 / 190


Collections (tableaux dynamiques) List

Python

Pour supprimer un élément de la liste selon l’indice. Si l’indice est


supérieur à la taille de la liste, une exception sera levée.
liste.pop(1)
I c

print(liste)
ELH
# affiche [2, 8, 5] U
L MO
f E
c hre
c A

H & H: Research and Training 98 / 190


Collections (tableaux dynamiques) List

Python

Pour supprimer un élément de la liste selon l’indice. Si l’indice est


supérieur à la taille de la liste, une exception sera levée.
liste.pop(1)
I c

print(liste)
ELH
# affiche [2, 8, 5] U
L MO
f E
Ou aussi A c hre
c
del liste[1]
print(liste)
# affiche [2, 8, 5]

H & H: Research and Training 98 / 190


Collections (tableaux dynamiques) List

Python

Pour parcourir une liste


for elt in liste:
print(elt) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 99 / 190


Collections (tableaux dynamiques) List

Python

Pour parcourir une liste


for elt in liste:
print(elt) I c

ELH
U
L MO
Le résultat est
f E
c hre
c A
2
3
8
5

H & H: Research and Training 99 / 190


Collections (tableaux dynamiques) List

Python

Pour afficher les éléments et leurs indices


for ind in range(len(liste)):
print(ind, liste[ind]) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 100 / 190


Collections (tableaux dynamiques) List

Python

Pour afficher les éléments et leurs indices


for ind in range(len(liste)):
print(ind, liste[ind]) I c

ELH
U
L MO
Le résultat est
f E
c hre
c A
0 2
1 3
2 8
3 5

H & H: Research and Training 100 / 190


Collections (tableaux dynamiques) List

Python

On peut aussi utiliser enumerate


for ind, elt in enumerate(liste):
print(ind, elt) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 101 / 190


Collections (tableaux dynamiques) List

Python

On peut aussi utiliser enumerate


for ind, elt in enumerate(liste):
print(ind, elt) I c

ELH
U
L MO
Le résultat est
f E
c hre
c A
0 2
1 3
2 8
3 5

H & H: Research and Training 101 / 190


Collections (tableaux dynamiques) List

Python

Pour modifier la valeur initiale de l’indice, on utilise start


for ind, elt in enumerate(liste, start=1):
print(ind, elt) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 102 / 190


Collections (tableaux dynamiques) List

Python

Pour modifier la valeur initiale de l’indice, on utilise start


for ind, elt in enumerate(liste, start=1):
print(ind, elt) I c

ELH
U
L MO
Le résultat est
f E
c hre
c A
1 2
2 3
3 8
4 5

H & H: Research and Training 102 / 190


Collections (tableaux dynamiques) List

Python

Autres méthodes sur les listes


clear() : supprime tous les éléments de la liste.
I c
count(x) : compte le nombre de x dans la liste.
E L H
U
L Msi O
index(x) : retourne l’indice de la premi ère occurrence de x dans

re f E
la liste, une exception sera levée x n’est pas dans la liste.
h
sort() : trie lacliste.
c A
reverse() : inverse l’ordre des éléments de la liste.
...

H & H: Research and Training 103 / 190


Collections (tableaux dynamiques) List

Python

Exemple avec index(value, start, stop)


liste2 = [2, 3, 8, 5, 0, 3, 1, 3]

print(liste2.index(3))
I c

# affiche 1
ELH
U
print(liste2.index(3, 2))
L MO
f E
hre
# affiche 5
c
c A

print(liste2.index(3, -1))
# affiche 7

print(liste2.index(3, 0, 5))
# affiche 1

H & H: Research and Training 104 / 190


Collections (tableaux dynamiques) List

Python

Exercice 1 : Étant donnée la liste suivante


ma_liste = [2, 7, 2, 1, 3, 9, 2, 4, 2]
I c
EL H
U
O de supprimer l’avant
M
Écrire un programme Python qui permet
L
f E 2 de la liste précédente
dernière occurrence du chiffre
r e
A ch
c

H & H: Research and Training 105 / 190


Collections (tableaux dynamiques) List

Python

Exercice 1 : Étant donnée la liste suivante


ma_liste = [2, 7, 2, 1, 3, 9, 2, 4, 2]
I c
EL H
U
O de supprimer l’avant
M
Écrire un programme Python qui permet
L
f E 2 de la liste précédente
dernière occurrence du chiffre
r e
A ch
c
Le résultat attendu
[2, 7, 2, 1, 3, 9, 4, 2]

H & H: Research and Training 105 / 190


Collections (tableaux dynamiques) List

Python

Une solution possible


I c

ma_liste = [2, 7, 2, 1, 3, 9, 2, 4, 2]
ELH
U
ma_liste.reverse()
L MO
f E
ma_liste.pop(ma_liste.index(2, ma_liste.index(2) + 1))
ma_liste.reverse()
c hre
print(ma_liste)
c A

H & H: Research and Training 106 / 190


Collections (tableaux dynamiques) List

Python

Il est possible de décomposer les valeurs d’une liste et les


stocker dans des variables
a, b, c, d = liste
print(a, b, c, d)
I c

# affiche 2 3 8 5
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 107 / 190


Collections (tableaux dynamiques) List

Python

Il est possible de décomposer les valeurs d’une liste et les


stocker dans des variables
a, b, c, d = liste
print(a, b, c, d)
I c

# affiche 2 3 8 5
ELH
U
L MO
e f E
Les valeurs d’une listerpeuvent
c h être construites à partir de
c A
plusieurs variables

a, b, c, d = 2, 3, 8, 5
liste = [a, b, c, d]
print(liste)
# affiche [2, 3, 8, 5]

H & H: Research and Training 107 / 190


Collections (tableaux dynamiques) Tuple

Python
Pour déclarer un tuple, on utilise les ()
marques = ("peugeot", "ford", "toyota")

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 108 / 190


Collections (tableaux dynamiques) Tuple

Python
Pour déclarer un tuple, on utilise les ()
marques = ("peugeot", "ford", "toyota")

I c
H
EL élément
Pour accéder à un élément selon son indice (premier
d’indice 0) O U
L M
print(marques[1])
# affiche ford hre
fE
A c
c

H & H: Research and Training 108 / 190


Collections (tableaux dynamiques) Tuple

Python
Pour déclarer un tuple, on utilise les ()
marques = ("peugeot", "ford", "toyota")

I c
H
EL élément
Pour accéder à un élément selon son indice (premier
d’indice 0) O U
L M
print(marques[1])
# affiche ford hre
fE
A c
c
Pour accéder au dernier élément d’une liste
print(marques[-1])
# affiche toyota

H & H: Research and Training 108 / 190


Collections (tableaux dynamiques) Tuple

Python

Accéder à un élément via un indice inexistant génère une erreur


print(marques[10])
Traceback (most recent call last):
I c

File "c:/Users/elmou/Desktop/cours-python/main.py"
ELH
, line 2, in <module>
U
print(marques[10])
L MO
IndexError: tuple index out of range
f E
c hre
c A

H & H: Research and Training 109 / 190


Collections (tableaux dynamiques) Tuple

Python

Accéder à un élément via un indice inexistant génère une erreur


print(marques[10])
Traceback (most recent call last):
I c

File "c:/Users/elmou/Desktop/cours-python/main.py"
ELH
, line 2, in <module>
U
print(marques[10])
L MO
IndexError: tuple index out of range
f E
A c hre
c
Pour déterminer la taille d’un tuple
print(len(marques))
# affiche 3

H & H: Research and Training 109 / 190


Collections (tableaux dynamiques) Tuple

Python
Modifier un élément d’un tuple génère une erreur
marques[1] = "fiat"
Traceback (most recent call last):
File "c:/Users/elmou/Desktop/cours-python/main.py"
I c

, line 2, in <module>
ELH
marques[1] = "fiat"
U
TypeError: ’tuple’ object does not support item
L MO
assignment
f E
c hre
c A

H & H: Research and Training 110 / 190


Collections (tableaux dynamiques) Tuple

Python
Modifier un élément d’un tuple génère une erreur
marques[1] = "fiat"
Traceback (most recent call last):
File "c:/Users/elmou/Desktop/cours-python/main.py"
I c

, line 2, in <module>
ELH
marques[1] = "fiat"
U
TypeError: ’tuple’ object does not support item
L MO
assignment
f E
A c hre

Remarques
c
Il est impossible d’ajouter ou supprimer un élément d’un tuple
count(x) et index(x) sont applicables sur les tuples

H & H: Research and Training 110 / 190


Collections (tableaux dynamiques) Tuple

Python

Pour parcourir un tuple


for elt in marques:
I c

print(elt)
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 111 / 190


Collections (tableaux dynamiques) Tuple

Python

Pour parcourir un tuple


for elt in marques:
I c

print(elt)
ELH
U
L MO
f E
hre
Le résultat est
c
peugeot
ford
c A

toyota

H & H: Research and Training 111 / 190


Collections (tableaux dynamiques) Set

Python
Pour déclarer un set, on utilise les {}

ensemble = {2, 3, 8, 5}

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 112 / 190


Collections (tableaux dynamiques) Set

Python
Pour déclarer un set, on utilise les {}

ensemble = {2, 3, 8, 5}

I c

Impossible d’accéder à un élément d’un ensemble via son indice (un ensemble n’est pas
ordonné et est donc non indexé)
ELH
U
MO
print(ensemble[1])
Traceback (most recent call last):

f E L
File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in <
module>
c hre
c A
print(ensemble[1])


TypeError: ’set’ object is not subscriptable

H & H: Research and Training 112 / 190


Collections (tableaux dynamiques) Set

Python
Pour déclarer un set, on utilise les {}

ensemble = {2, 3, 8, 5}

I c

Impossible d’accéder à un élément d’un ensemble via son indice (un ensemble n’est pas
ordonné et est donc non indexé)
ELH
U
MO
print(ensemble[1])
Traceback (most recent call last):

f E L
File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in <
module>
c hre
c A
print(ensemble[1])


TypeError: ’set’ object is not subscriptable

Pour déterminer la taille d’un set

print(len(ensemble))
# affiche 4

H & H: Research and Training 112 / 190


Collections (tableaux dynamiques) Set

Python
Pour ajouter un nouvel élément à l’ensemble
ensemble.add(6)
print(ensemble)
# affiche {2, 3, 5, 6, 8}

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 113 / 190


Collections (tableaux dynamiques) Set

Python
Pour ajouter un nouvel élément à l’ensemble
ensemble.add(6)
print(ensemble)
# affiche {2, 3, 5, 6, 8}

I c

ELH
Pour ajouter plusieurs éléments simultanément
U
ensemble.update([6, 1])
L MO
print(ensemble)
# affiche {1, 2, 3,h r e fE
A c 5, 6, 8}

H & H: Research and Training 113 / 190


Collections (tableaux dynamiques) Set

Python
Pour ajouter un nouvel élément à l’ensemble
ensemble.add(6)
print(ensemble)
# affiche {2, 3, 5, 6, 8}

I c

ELH
Pour ajouter plusieurs éléments simultanément
U
ensemble.update([6, 1])
L MO
print(ensemble)
# affiche {1, 2, 3,h r e fE
A c 5, 6, 8}

c
Pour supprimer un élément
ensemble.remove(3)
print(ensemble)
# affiche {8, 2, 5}

H & H: Research and Training 113 / 190


Collections (tableaux dynamiques) Set

Python
Si l’élément à supprimer n’existe pas, remove déclenche une erreur
ensemble.remove(9)
Traceback (most recent call last):
File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in <
module>
ensemble.remove(9)
KeyError: 9
I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 114 / 190


Collections (tableaux dynamiques) Set

Python
Si l’élément à supprimer n’existe pas, remove déclenche une erreur
ensemble.remove(9)
Traceback (most recent call last):
File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in <
module>
ensemble.remove(9)
KeyError: 9
I c

ELH
U
MO
On peut utiliser discard pour supprimer (ne déclenche pas d’erreur si l’élément n’existe
L
pas)
f E
ensemble.discard(9)
c hre
c A
print(ensemble)

# affiche {8, 2, 3, 5}

H & H: Research and Training 114 / 190


Collections (tableaux dynamiques) Set

Python
Si l’élément à supprimer n’existe pas, remove déclenche une erreur
ensemble.remove(9)
Traceback (most recent call last):
File "c:/Users/elmou/Desktop/cours-python/main.py", line 2, in <
module>
ensemble.remove(9)
KeyError: 9
I c

ELH
U
MO
On peut utiliser discard pour supprimer (ne déclenche pas d’erreur si l’élément n’existe
L
pas)
f E
ensemble.discard(9)
c hre
c A
print(ensemble)

# affiche {8, 2, 3, 5}

Pour supprimer le dernier élément, on peut utiliser pop (Attention à l’ordre


ensemble.pop()
print(ensemble)
# affiche {2, 3, 5}

H & H: Research and Training 114 / 190


Collections (tableaux dynamiques) Set

Python

Pour parcourir un set


for elt in ensemble:
print(elt) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 115 / 190


Collections (tableaux dynamiques) Set

Python

Pour parcourir un set


for elt in ensemble:
print(elt) I c

ELH
U
L MO
Le résultat est
f E
c hre
c A
2
3
8
5

H & H: Research and Training 115 / 190


Collections (tableaux dynamiques) Set

Autres méthodes sur les ensembles


clear() : supprime tous les éléments de la liste
union() : fusionne deux ensembles

c

difference() :retourne un ensemble contenant les éléments
I
différents de deux ensembles ou plus
EL H
intersection() : retourne les élO
U
L M éments en commun entre
deux ensembles
h r e fE
issubset() :c
c A
sinon.
un autre,
retourne True si un ensemble est contenu dans
False
isdisjoint() : retourne True si deux ensembles ont au moins
un élément en commun, False sinon.
...

H & H: Research and Training 116 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour déclarer un dictionnaire (key: value), on utilise les {}

fcb = {
"messi": 10,
"suarez": 9,
"rakitic": 4,
"umtiti": 23
I c

}
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 117 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour déclarer un dictionnaire (key: value), on utilise les {}

fcb = {
"messi": 10,
"suarez": 9,
"rakitic": 4,
"umtiti": 23
I c

}
ELH
U
L MO
f E
hre
Pour accéder à une valeur selon la clé

c
c A
print(fcb.get(’messi’))
# affiche 10

H & H: Research and Training 117 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour déclarer un dictionnaire (key: value), on utilise les {}

fcb = {
"messi": 10,
"suarez": 9,
"rakitic": 4,
"umtiti": 23
I c

}
ELH
U
L MO
f E
hre
Pour accéder à une valeur selon la clé

c
c A
print(fcb.get(’messi’))
# affiche 10

Ou aussi

print(fcb[’messi’])
# affiche 10

H & H: Research and Training 117 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour extraire la liste de valeurs d’un dictionnaire
print(fcb.values())
# affiche dict_values([10, 9, 4, 23])

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 118 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour extraire la liste de valeurs d’un dictionnaire
print(fcb.values())
# affiche dict_values([10, 9, 4, 23])

I c

EL H
U
Pour extraire la liste de clés d’un dictionnaire
print(fcb.keys())
L MO
r e fE
# affiche dict_keys([’messi’,
h
’suarez’, ’rakitic’, ’
umtiti’])
A c
c

H & H: Research and Training 118 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour extraire la liste de valeurs d’un dictionnaire
print(fcb.values())
# affiche dict_values([10, 9, 4, 23])

I c

EL H
U
Pour extraire la liste de clés d’un dictionnaire
print(fcb.keys())
L MO
r e fE
# affiche dict_keys([’messi’,
h
’suarez’, ’rakitic’, ’
umtiti’])
A c
c
Pour connaı̂tre le nombre d’items d’un dictionnaire
print(len(fcb))
# affiche 4

H & H: Research and Training 118 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour ajouter un nouvel item au dictionnaire

fcb[’iniesta’] = 8
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’rakitic’: 4, ’umtiti’: 23, ’
iniesta’: ’8’}

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 119 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour ajouter un nouvel item au dictionnaire

fcb[’iniesta’] = 8
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’rakitic’: 4, ’umtiti’: 23, ’
iniesta’: ’8’}

I c

ELH
Si la clé existe, la valeur associée sera modifiée
U
fcb[’messi’] = 11
L MO
print(fcb)
f E
hre
# affiche {’messi’: 11, ’suarez’: 9, ’rakitic’: 4, ’umtiti’: 23}
c
c A

H & H: Research and Training 119 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour ajouter un nouvel item au dictionnaire

fcb[’iniesta’] = 8
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’rakitic’: 4, ’umtiti’: 23, ’
iniesta’: ’8’}

I c

ELH
Si la clé existe, la valeur associée sera modifiée
U
fcb[’messi’] = 11
L MO
print(fcb)
f E
hre
# affiche {’messi’: 11, ’suarez’: 9, ’rakitic’: 4, ’umtiti’: 23}
c
c A

On peut utiliser la méthode update pour ajouter plusieurs items ou modifier des items
existants

fcb.update({’messi’:11, ’iniesta’: 8})


print(fcb)
# affiche {’messi’: 11, ’suarez’: 9, ’rakitic’: 4, ’umtiti’: 23, ’
iniesta’: 8}

H & H: Research and Training 119 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour supprimer un item selon la clé

fcb.pop(’rakitic’)
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’umtiti’: 23}

I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 120 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour supprimer un item selon la clé

fcb.pop(’rakitic’)
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’umtiti’: 23}

I c

ELH
Ou aussi
U
del fcb[’rakitic’]
L MO
print(fcb)
f E
hre
# affiche {’messi’: 10, ’suarez’: 9, ’umtiti’: 23}
c
c A

H & H: Research and Training 120 / 190


Collections (tableaux dynamiques) Dictionary

Python
Pour supprimer un item selon la clé

fcb.pop(’rakitic’)
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’umtiti’: 23}

I c

ELH
Ou aussi
U
del fcb[’rakitic’]
L MO
print(fcb)
f E
hre
# affiche {’messi’: 10, ’suarez’: 9, ’umtiti’: 23}
c
c A

Pour supprimer le dernier item inséré

fcb.popitem()
print(fcb)
# affiche {’messi’: 10, ’suarez’: 9, ’rakitic’: 4}

H & H: Research and Training 120 / 190


Collections (tableaux dynamiques) Dictionary

Python

Pour parcourir un dictionnaire


for key in fcb:
print(key + ’ ’ + str(fcb[key])) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 121 / 190


Collections (tableaux dynamiques) Dictionary

Python

Pour parcourir un dictionnaire


for key in fcb:
print(key + ’ ’ + str(fcb[key])) I c

ELH
U
L MO
Le résultat est
f E
c hre
c A
messi 10
suarez 9
rakitic 4
umtiti 23

H & H: Research and Training 121 / 190


Collections (tableaux dynamiques) Dictionary

Python

Ou ausssi
for key, value in fcb.items():
print(key + ’ ’ + str(value)) I c

ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 122 / 190


Collections (tableaux dynamiques) Dictionary

Python

Ou ausssi
for key, value in fcb.items():
print(key + ’ ’ + str(value)) I c

ELH
U
L MO
Le résultat est le même
f E
c hre
c A
messi 10
suarez 9
rakitic 4
umtiti 23

H & H: Research and Training 122 / 190


Collections (tableaux dynamiques) Dictionary

Python

Autres méthodes sur les dictionnaires


I c
EL H
U
clear() : supprime tous les items d’un dictionnaire

L
copy() : copie un dictionnaire MO
h r e fE
...
A c
c

H & H: Research and Training 123 / 190


Collections (tableaux dynamiques) Dictionary

Python

Exercice : Étant donnée la liste suivante :


liste = [2, 5, "Bonjour", True, ’c’, "3", "b", False
, 10]
I c
EL H
U
O de stocker dans un
dictionnaire (compteur) lesE L M
Écrire un programme Python qui permet

ainsi que le nombrehd’réle


f types contenus dans la liste liste
chaque type. A
c éments de cette liste appartenant à
c
Résultat attendu :
{’int’: 3, ’str’: 4, ’bool’: 2}

H & H: Research and Training 124 / 190


Collections (tableaux dynamiques) Dictionary

Python

Une première solution


liste = [2, 5, "Bonjour", True, ’c’, "3", "b", False, 10]
compteur = {}
I c

EL H
for e in liste:
O U
M
if (type(e).__name__ in compteur):
L
r e f E
compteur[type(e).__name__] += 1
else:
A ch
compteur[type(e).__name__] = 1
c
print(compteur)
# affiche {’int’: 3, ’str’: 4, ’bool’: 2}

H & H: Research and Training 125 / 190


Collections (tableaux dynamiques) Dictionary

Python

Une deuxième solution


liste = [2, 5, "Bonjour", True, ’c’, "3", "b", False, 10]
compteur = {}
I c

E LH
for elt in liste:
U
MO
type = elt.__class__.__name__
L
f E compteur[type] + 1})
if type in compteur.keys():
r e
compteur.update({type:
c h
else:
c A
compteur.update({type: 1})

print(compteur)
# affiche {’int’: 3, ’str’: 4, ’bool’: 2}

H & H: Research and Training 126 / 190


Variable (objet) muable (mutable)

Python

En Python
Toute variable est un objet (instance d’une classe)
I c
Deux types d’objet
L H
U é E
préservant la même identité) M
O
Mutable (ou muable) : peut être modifi après sa création (en
L
f E : ne peut être modifié après sa création
r e
Immutable (ou immuable)
(peut être rc h
c A éaffecté)

H & H: Research and Training 127 / 190


Variable (objet) muable (mutable)

Python

En Python
Toute variable est un objet (instance d’une classe)
I c
Deux types d’objet
L H
U é E
préservant la même identité) M
O
Mutable (ou muable) : peut être modifi après sa création (en
L
f E : ne peut être modifié après sa création
r e
Immutable (ou immuable)
(peut être rc h
c A éaffecté)

Ne pas confondre modification et affectation

H & H: Research and Training 127 / 190


Variable (objet) muable (mutable)

Python
Exemple d’objets mutables

list

dict

I c

set

ELH
classes personnalisées
U
L MO
f E
c hre
c A

H & H: Research and Training 128 / 190


Variable (objet) muable (mutable)

Python
Exemple d’objets mutables

list

dict

I c

set

ELH
classes personnalisées
U
L MO
f E
c hre
c A
Exemple


liste = [2, 3, 8, 5]

print(id(liste))
# affiche 20373256

liste[2] = 4
print(id(liste))
# affiche 20373256

H & H: Research and Training 128 / 190


Variable (objet) muable (mutable)

Python
Exemple d’objets immuables

int et float

str

I c

bool

ELH
tuple
U
L MO
f E
c hre
c A

H & H: Research and Training 129 / 190


Variable (objet) muable (mutable)

Python
Exemple d’objets immuables

int et float

str

I c

bool

ELH
tuple
U
L MO
f E
c hre
c A
Exemple
ch = "bonjour"

print(id(ch))
# affiche 9417152

ch = "bonsoir"
print(id(ch))
# affiche 9417216

H & H: Research and Training 129 / 190


Variable (objet) muable (mutable)

Python

Un objet immuable peut être réaffecté mais ne peut être modifié


ch = "bonjour"
I c

ELH
U
MO
print(ch)
# affiche bonjour
f E L
c hre
c A
ch[3] = "t"

# affiche TypeError: ’str’ object does not support
item assignment

H & H: Research and Training 130 / 190


Variable (objet) muable (mutable)

Python

Objet muable vs objet immuable


I c
H
EL coûteuse
(création d’une nouvelle copie) MO
U
Objets immuables : accès plus rapide et modification

f E Lmoins coûteuse et accès moins


c h re
Objets muables : modification

c A
rapide

H & H: Research and Training 131 / 190


Variable (objet) muable (mutable)

Python
Un tuple est un objet immuable, donc il ne peut être modifié
tpl = ([2, 3], [8, 5])

tpl[0] = 1
# affiche TypeError: ’tuple’ object does not support item I c

assignment
ELH
U
L MO
f E
c hre
c A

H & H: Research and Training 132 / 190


Variable (objet) muable (mutable)

Python
Un tuple est un objet immuable, donc il ne peut être modifié
tpl = ([2, 3], [8, 5])

tpl[0] = 1
# affiche TypeError: ’tuple’ object does not support item I c

assignment
ELH
U
L MO
f E
e muable, alors il est possible de le modifier
Si un élément d’un tuplerest
c h
A[8, 5])
tpl = ([2,c3],

tpl[0][1] = 1

print(tpl)
# affiche ([2, 1], [8, 5])

H & H: Research and Training 132 / 190


Fonctions

Python

Les fonctions en Python

Un bloc d’instructions réalisant une fonctionnalité bien


déterminée. I c

EL H
U
Pouvant retourner une ou plusieurs valeurs
O
L M
h r e fE
Pouvant prendre 0 ou plusieurs paramètres

A c d’autres fonctions
Pouvant appeler
c
retourner une autre fonction
Pouvant
Pouvant avoir comme paramètre le nom d’une autre fonction

H & H: Research and Training 133 / 190


Fonctions Déclaration et appel

Python
Déclarer une fonction
def nom_function([parameters]):
# instructions

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 134 / 190


Fonctions Déclaration et appel

Python
Déclarer une fonction
def nom_function([parameters]):
# instructions

I c

Exemple
ELH
U
def somme(a, b):
L MO
return a + b
f E
chre
c A

H & H: Research and Training 134 / 190


Fonctions Déclaration et appel

Python
Déclarer une fonction
def nom_function([parameters]):
# instructions

I c

Exemple
ELH
U
def somme(a, b):
L MO
return a + b
f E
A c hre
c
Appeler une fonction
resultat = somme (1, 3)

print(resultat)
# affiche 4

H & H: Research and Training 134 / 190


Fonctions Déclaration et appel

Python

Exercice

Écrire une fonction Python qui retourne la factorielle d’un nombre


passé en paramètre.
I c

ELH
U
L MO
f E
Factorielle : rappel
chre
0! = 1 c A

1! = 1
n! = n ∗ (n − 1)!

H & H: Research and Training 135 / 190


Fonctions Déclaration et appel

Python

Solution
def factorielle(n): I c

ELH
U
result = 1
for i in range(2, n L MO
result *= rief
E + 1):

A c h
c
result
return

H & H: Research and Training 136 / 190


Fonctions Fonction récursive

Python

Une version récursive de factorielle (une fonction récursive


est une fonction qui s’appelle elle-même)
I c

def factorielle(n):
EL H
U
result = 1
L MO
E
if (n == 0 or n == 1):
return 1 ref
else: A c h
c
return n * factorielle(n - 1)

H & H: Research and Training 137 / 190


Fonctions Fonction récursive

Python
Exercice

Écrire une fonction récursive


acceptant comme paramètre un entier positif n
I c

EL H
retournant le nième terme de la suite de Fibonacci
U
L MO
h r e fE
A
Suite de Fibonacci c
c
U0 = 0
U1 = 1
Un = Un−1 + Un−2

H & H: Research and Training 138 / 190


Fonctions Fonction à multi-valeurs de retour

Python
Contrairement à la majorité des langages de programmation, une
fonction Python peut retourner plusieurs valeurs
liste = [2, 3, 8, 5]
def pairs_et_impairs(liste):
I c

evens = odds = 0
ELH
for elt in liste: U
if (elt % 2 == 0):
L MO
f E
hre
evens += 1
else: c
c A

odds += 1
return evens, odds

print(pairs_et_impairs([2, 3, 5, 8, 1]))
# affiche (2, 3)

H & H: Research and Training 139 / 190


Fonctions Fonction à multi-valeurs de retour

Python
Les valeurs retournées par une fonction peuvent être récupérées
dans des variables de la manière suivante
def pairs_et_impairs(liste):
evens = odds = 0
I c

for elt in liste:
if (elt % 2 == 0): ELH
U
evens += 1
L MO
else:
f E
odds += 1
chre
c A
return evens, odds

pairs, impairs = pairs_et_impairs([2, 3, 5, 8, 1])

print(f’#pairs = {pairs} et #impairs = {impairs}’)


# affiche #pairs = 2 et #impairs = 3

H & H: Research and Training 140 / 190


Fonctions Fonction retournant une fonction

Python
Une fonction peut avoir comme valeur de retour une autre
fonction
def b():
print("b()")
I c

def a(): ELH
U
print("a()")
L MO
return b
f E
chre
c A
returned_function = a()

returned_function()
# affiche
# a()
# b()

H & H: Research and Training 141 / 190


Fonctions Fonction retournant une fonction

Python

Pour le cas où les fonctions ont des paramètres


def afficher_resultat(ch, result):
print(f"Le résultat de la {ch} est {result}")
I c

ELH
U
def somme(a, b): L MO
f E
hre
return afficher_resultat("somme", a + b)
c
c A
somme(2, 5)
# affiche Le résultat de la somme est 7

H & H: Research and Training 142 / 190


Fonctions Type

Python

Il est possible de typer les paramètres et/ou la valeur de retour de


la fonction
def somme(a: int, b: int) -> int:
I c

return a + b
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 143 / 190


Fonctions Type

Python

Il est possible de typer les paramètres et/ou la valeur de retour de


la fonction
def somme(a: int, b: int) -> int:
I c

return a + b
ELH
U
L MO
f E
hre
Pour tester (rien à changer)
c
c A

resultat = somme (1, 3)

print(resultat)
# affiche 4

H & H: Research and Training 143 / 190


Fonctions Type

Python

Quelques types pour les fonctions (paramètres et valeur de retour, à


importer de typing)

Les types connus autorisés pour les variables


I c

Iterable
ELH
U
Any
L MO
f E
hre
None
c
Callable c A

TypeVar
Union
...

H & H: Research and Training 144 / 190


Fonctions Paramètres avec valeur par défaut

Python

Il est possible d’attribuer une valeur par défaut aux paramètres


d’une fonction
I c

def division(x, y = 1):
ELH
return x / y
U
L MO
print(division(10))
f E
# affiche 10.0
A c hre
c
print(division(10, 2))
# affiche 5.0

H & H: Research and Training 145 / 190


Fonctions Opérateur *

Python

I c
L’opérateur * peut être utilisé pour
E LH
U
MO
récupérer les paramètres restants (packing)
L
décomposer une listeeen
h r fEun ensemble de paramètre (unpacking)
A c
c

H & H: Research and Training 146 / 190


Fonctions Opérateur *

Python
Il est possible de définir une fonction prenant un nombre indéfini de paramètres
avec l’opérateur * (le paramètre autres est un tuple)

def somme(x, *autres):


for elt in autres:
x += elt
I c

return x
ELH
U
print(somme(2))
L MO
# affiche 2
f E
print(somme(10, 2))hre
# affiche 12 A
c
c
print(somme(10, 2, 5))
# affiche 17

print(somme(10, 2, 5, 3))
# affiche 20

H & H: Research and Training 147 / 190


Fonctions Opérateur *

Considérons la fonction produit suivante


def produit(a, b, c):
return a * b * c

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 148 / 190


Fonctions Opérateur *

Considérons la fonction produit suivante


def produit(a, b, c):
return a * b * c

Pour appeler la fonction produit, il faut lui passer trois paramètres number

I c

print(produit (1, 3, 5))
# affiche 15
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 148 / 190


Fonctions Opérateur *

Considérons la fonction produit suivante


def produit(a, b, c):
return a * b * c

Pour appeler la fonction produit, il faut lui passer trois paramètres number

I c

print(produit (1, 3, 5))
# affiche 15
ELH
U
L MO
f E
hre
Et si les valeurs se trouvent dans une liste, on peut faire
c
c A
liste = [1, 3, 5]

print(produit(*liste))

H & H: Research and Training 148 / 190


Fonctions Opérateur *

Considérons la fonction produit suivante


def produit(a, b, c):
return a * b * c

Pour appeler la fonction produit, il faut lui passer trois paramètres number

I c

print(produit (1, 3, 5))
# affiche 15
ELH
U
L MO
f E
hre
Et si les valeurs se trouvent dans une liste, on peut faire
c
c A
liste = [1, 3, 5]

print(produit(*liste))

On peut utiliser partiellement la décomposition


liste = [1, 3]
print(produit(*list, 5))

H & H: Research and Training 148 / 190


Fonctions Opérateur *

Python

Écrire une fonction Python qui reçoit un nombre variable de


I c

paramètre et retourne un dictionnaire contenant les types
ELH
présents dans la liste liste ainsi que leur nombre d’occurrence.
U
L MO
f E
hre
Exemple
c
c A
print(compute_types(2, ’bonjour’, ’True’, True, 3, ’3’, 9, 7, False))

{’int’: 4, ’str’: 3, ’bool’: 2}

H & H: Research and Training 149 / 190


Fonctions Opérateur *

Python

Une solution possible


def returns_types(*params):
I c

compteur = {}
ELH
for e in params:
U
if (type(e).__name__ in compteur):
L MO
f E
compteur[type(e).__name__] += 1
else:
chre
c A

compteur[type(e).__name__] = 1

return compteur

H & H: Research and Training 150 / 190


Fonctions Opérateur **

Python

Il est possible de définir une fonction acceptant un dictionnaire


de paramètres avec l’opérateur ** (le nombre de clés est indéfini)
I c

def dire_bonjour(**personne):
ELH
print(’bonjour ’ + personne["nom"])
U
L MO
f E
dire_bonjour(nom = "wick", prenom = "john")
c
# affiche bonjour wick
A hre
c
dire_bonjour(nom = "abruzzi", age = 45)
# affiche bonjour abruzzi

H & H: Research and Training 151 / 190


Fonctions Paramètre kwargs

Python

Il est possible d’utiliser le mot-clé kwargs (keyword arguments)


pour récupérer les paramètres sans connaı̂tre les clés
def dire_bonjour(**kwargs):
I c

for key, value in kwargs.items():
ELH
U
print(key, value, end=" ")
L MO
f E
hre
dire_bonjour(nom="wick", prenom="john")
c
c A
# affiche nom wick prenom john

dire_bonjour(nom="abruzzi", age=45)
# affiche nom abruzzi age 45

H & H: Research and Training 152 / 190


Fonctions Paramètre kwargs

Python

Vous pouvez également utiliser la syntaxe **kwargs lors de


l’appel de fonction en construisant un dictionnaire d’arguments
et en le passant à la fonction :
I c

def dire_bonjour(**kwargs):
ELH
for key, value in kwargs.items(): U
print(key, value, end=" ")
L MO
f E
chre
c A

kwargs = {"nom": "wick", "prenom": "john"}

dire_bonjour(**kwargs)
# affiche nom wick prenom john

H & H: Research and Training 153 / 190


Fonctions Paramètre kwargs

Python

Exercice : sans tester, qu’affiche le programme suivant ?


def my_function(*params, **kwargs):
print("params: ", params)
I c

print("kwargs: ", kwargs)
E LH
U
MO quatre="4", cinq=
my_function(’un’, ’deux’, ’trois’,
L
"5", six="6")
h r e fE
A c
c

H & H: Research and Training 154 / 190


Fonctions Paramètre kwargs

Python

Exercice : sans tester, qu’affiche le programme suivant ?


def my_function(*params, **kwargs):
print("params: ", params)
I c

print("kwargs: ", kwargs)
E LH
U
MO quatre="4", cinq=
my_function(’un’, ’deux’, ’trois’,
L
"5", six="6")
h r e fE
A c
c
Le résultat est :
params: (’un’, ’deux’, ’trois’)
kwargs: {’quatre’: ’4’, ’cinq’: ’5’, ’six’: ’6’}

H & H: Research and Training 154 / 190


Fonctions Fonction de retour (callback)

Python

Fonction de retour (callback)

fonction appelée comme un paramètre d’une deuxième fonction

c

très utilisée en Python pour simplifier certaines opérations (sur
I
les tableaux par exemple)
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 155 / 190


Fonctions Fonction de retour (callback)

Python

Fonction de retour (callback)

fonction appelée comme un paramètre d’une deuxième fonction

c

très utilisée en Python pour simplifier certaines opérations (sur
I
les tableaux par exemple)
ELH
U
L MO
e f E
rfonctions
c h
Considérons les deux
A suivantes
c b):

def somme(a,
return a + b

def produit(a, b):


return a * b

H & H: Research and Training 155 / 190


Fonctions Fonction de retour (callback)

Python

Utilisons les fonctions précédentes comme callback d’une


fonction operation()
def operation(a, b, fonction):
I c

print(fonction(a, b))
ELH
U
L MO
fE
# appeler la fonction opération
r e
operation(3, 5, somme)
# affiche 8 Ac h
c
operation(3, 5, produit)
# affiche 15

H & H: Research and Training 156 / 190


Fonctions Fonction de retour (callback)

Python

Exercice
I c

ELH
Modifier la fonction opération pour qu’elle puisse accepter deux
U
fonctions callback ensuite retourner le résultat de la composition
des deux.
L MO
f E
Par exemple :
chre
+ 3) * 6 c A
operation (2, 3 , 6, somme, produit) retourne 30 = (2

H & H: Research and Training 157 / 190


Fonctions Fonction de retour (callback)

Python

Solution
def operation(a, b, c, f1, f2):
I c

print(f2(f1(a, b), c))
ELH
O U
M
# appeler la fonction opération
L
f E produit)
operation (2, 3 , 6, somme,
r e
# affiche 30
A ch

operation
c(2, 3 , 6, produit, somme)
# affiche 12

H & H: Research and Training 158 / 190


Fonctions Fonction génératrice

Python

Fonction génératrice

définie comme toute autre fonction Python

I c

utilisant le mot-clé yield pour générer plusieurs valeurs (même
une séquence infinie)
EL H
U
MOqui ne peuvent pas contenir
contrairement aux fonctions normales
L
r e E (seul le premier sera exécuté), une
plusieurs return consfécutifs

A c h
fonction génératrice peut contenir plusieurs yield
c
pouvant utiliser le mot-clé return
très efficace en mémoire par rapport aux fonctions normales qui
renvoie une séquence de valeurs entièrement chargée en
mémoire

H & H: Research and Training 159 / 190


Fonctions Fonction génératrice

Python

Exemple
def generateur():
for i in range(0, 3):
I c

yield i
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 160 / 190


Fonctions Fonction génératrice

Python

Exemple
def generateur():
for i in range(0, 3):
I c

yield i
ELH
U
L MO
f E
hre
Pour appeler la fonction et récupérer les valeurs générées
c
c A

for value in generateur():
print(value, end=" ")

# affiche 0 1 2

H & H: Research and Training 160 / 190


Fonctions Fonction génératrice

Python

Pour récupérer les valeurs une par une, on utilise la fonction next ()

x = generateur()
print(type(x))
# affiche <class ’generator’>
I c

print(x.__next__())
ELH
U
MO
# affiche 0

print(x.__next__())
f E L
# affiche 1
chre
c A

print(x.__next__())
# affiche 2

print(x.__next__())
# affiche exception

H & H: Research and Training 161 / 190


Fonctions Fonction génératrice

Python

Utiliser un return dans une fonction permet de retourner la


dernière valeur
def generateur():
I c

for i in range(0, 5):
ELH
if (i == 3):
U
return 3
L MO
yield i
f E
chre
c A

for value in generateur():
print(value, end=" ")

# affiche 0 1 2

H & H: Research and Training 162 / 190


Fonctions Fonction génératrice

Python

Il est possible d’utiliser plusieurs fois yield


def generateur():
yield 0
I c

for i in range(1, 5):
ELH
if (i == 3):
U
return 3
L MO
yield i
f E
chre
c A

for value in generateur():
print(value, end=" ")

# affiche 0 1 2

H & H: Research and Training 163 / 190


Fonctions Fonction génératrice

Python

Il est possible de créer une fonction génératrice à partir d’une


boucle for

I c

liste = [2, 3, 8, 5]
E LH
U
MO
double = (elt * 2 for elt in liste)
L
for i in double: ref
E
print(i,A
h
c ")
c end="

# affiche 4 6 16 10

H & H: Research and Training 164 / 190


Fonctions Fonction génératrice

Python

Exercice
I c

H
ELPython
U
En utilisant yield, écrire une fonction génératrice
O
acceptant comme paramètreLunM entier positif x

h r e f Eun nombre premier inférieur à x


A c
retournant à chaque appel
c

H & H: Research and Training 165 / 190


Fonctions Fonction génératrice

Python

Solution
def est_premier(n):
for i in range(2, n):
if (n % i == 0):
I c

return False
ELH
return True U
L MO
def get_all_premier(n):
f E
for i in range(1, n+1):
chre
c A
if (est_premier(i)):

yield i

for value in get_all_premier(100):


print(value, end=" ")

H & H: Research and Training 166 / 190


Fonctions Fonction génératrice

Python
Exercice
En utilisant yield, écrire une fonction génératrice Python
acceptant comme paramètre un entier positif n
I c

retournant les n premiers termes de la suite LH
E de Fibonacci
U
L MO
h r e fE
A
Suite de Fibonacci c
c
U =0 0

U1 = 1
Un = Un−1 + Un−2

H & H: Research and Training 167 / 190


Fonctions Fonction génératrice

Python

Solution
def fibonacci(x):
n = 0
m = 1
I c

yield n
ELH
yield m U
for i in range(2, x + 1):
L MO
result = n + m
f E
yield result
chre
n = m
m = resultc A

for value in fibonacci(10):
print(value, end=" ")

H & H: Research and Training 168 / 190


Fonctions Variables locales et globales

Python

Une variable déclarée dans une fonction est dite locale et n’est
donc pas accessible de l’extérieur
def fonction():
I c

x = 200
ELH
U
print(x)
L MO
f E
# affiche
chre
c A
Traceback (most recent call last):

File "c:/Users/elmou/Desktop/cours-python/main.py"
, line 4, in <module>
print(x)
NameError: name ’x’ is not defined

H & H: Research and Training 169 / 190


Fonctions Variables locales et globales

Python

Une variable non-déclarée dans une fonction est dite globale. Une
fonction peut redéclarer une variable globale
x = 100
I c

def fonction():
ELH
x = 200 U
print(x)
L MO
f E
fonction() chre
# affiche 200 c A

print(x)
# affiche 100

H & H: Research and Training 170 / 190


Fonctions Variables locales et globales

Python

Dans une fonction, on peut utiliser le mot-clé global pour


indiquer qu’on utilise la valeur définie dans le contexte global
x = 100
I c

def fonction():
global x ELH
U
x = 200
L MO
print(x)
f E
chre
fonction()
# affiche 200 c A

print(x)
# affiche 200

H & H: Research and Training 171 / 190


Fonctions Variables locales et globales

Python

Une variable déclarée dans une fonction est dite locale et n’est
donc pas accessible de l’extérieur
def fonction():
I c

x = 200
ELH
U
print(x)
L MO
f E
# affiche
chre
c A
Traceback (most recent call last):

File "c:/Users/elmou/Desktop/cours-python/main.py"
, line 4, in <module>
print(x)
NameError: name ’x’ is not defined

H & H: Research and Training 172 / 190


Fonctions Fonction Lambda

Python

Fonctions Lambda
I c

fonction anonyme
E LH
U
MO ètres
acceptant un nombre indéfini de param
L
r e fE
limitée à une seule instruction
h
A cle mot-clé lambda
c
déclarée avec

H & H: Research and Training 173 / 190


Fonctions Fonction Lambda

Python

Syntaxe
lambda arguments : instruction

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 174 / 190


Fonctions Fonction Lambda

Python

Syntaxe
lambda arguments : instruction

I c

Exemple
ELH
U
somme = lambda a, b: a + b
L MO
f E
chre
c A

H & H: Research and Training 174 / 190


Fonctions Fonction Lambda

Python

Syntaxe
lambda arguments : instruction

I c

Exemple
ELH
U
somme = lambda a, b: a + b
L MO
f E
chre
c A

Appel d’une fonction lambda
resultat = somme (1, 3)

print(resultat)
# affiche 4

H & H: Research and Training 174 / 190


Documentation

Python

I c

Considérons la fonction somme suivante :
ELH
U
def somme(a=0, b=0):
L MO
return a + b
f E
chre
c A

H & H: Research and Training 175 / 190


Documentation

Python

Pour activer l’ajout automatique de commentaire de documentation


sous PyCharm
Aller dans File > Settings sous Windows et Linux etI c

ELH
PyCharm > Preferences sous Mac ou tout simplement cliquer
U
sur Ctrl Alt S
L MO
f E
hre
Ouvrir Editor > General > Smart Keys > Python
c
c A
Cocher la case Insert type placeholders in the

documentation comment stub
Cliquer sur Ok

H & H: Research and Training 176 / 190


Documentation

Pour générer un commentaire de documentation sous PyCharm, il faut

Placer le curseur sur le nom de la fonction somme

Cliquer sur Alt Enter

Cliquer sur Insert documentation string stub >

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 177 / 190


Documentation

Pour générer un commentaire de documentation sous PyCharm, il faut

Placer le curseur sur le nom de la fonction somme

Cliquer sur Alt Enter

Cliquer sur Insert documentation string stub >

I c

ELH
U
MO
Nouveau contenu de la fonction somme

def somme(a=0, b=0):


f E L
hre
"""
c
:param a:
:type a:
:param b:
c A

:type b:
:return:
:rtype:
"""
return a + b

H & H: Research and Training 177 / 190


Documentation

Python

Mettons à jour le commentaire de documentation

def somme(a=0, b=0):


"""calcule et retourne la somme des deux paramètres
I c
:param a: optionnel, valeur par défaut 0L H
:type a: entier ou réel
O UE
:type b: entier ou réelEL
M défaut 0
:param b: optionnel, valeur par

c h efla somme de deux paramètres a et b


:return: résultat rde

""" c A ou réel
:rtype: entier

return a + b

H & H: Research and Training 178 / 190


Documentation

Python

Les propositions (PEP 257) pour DocString


I c
Une documentation pour chaque fonction
E L H
U
MOla ligne contenant le mot-clé
La documentation est à placer après
L
def
h r e fE
c de la documentation doit seulement contenir les
c A
La dernière ligne
"""

H & H: Research and Training 179 / 190


Documentation help

Python

L’appel de la fonction help permet l’extraction du DocString associé

help(somme)
# affiche Help on function somme in module __main__:
I c

#
ELH
# somme(a=0, b=0)
U
#
MO
calcule et retourne la somme des deux paramètres
L
#
E
:param a: optionnel, valeur par défaut 0
f
hre
# :type a: entier ou réel
c
c A
# :param b: optionnel, valeur par défaut 0
#
#
:type b: entier ou réel
:return: résultat de la somme de deux paramètres a et b
# :rtype: entier ou réel

H & H: Research and Training 180 / 190


Documentation Documentation HTML

Python

Plusieurs commandes pour générer la documentation

I c
python -m pydoc -b pour afficher la documentation dans une
page HTML EL H
U
Ogénérer la documentation
python -m pydoc -w main M
L pour
E main.html
pour le fichier main.pyf dans
h r e
c -w .\ pour générer la documentation pour
python -mApydoc
c
tous les fichiers du projet

H & H: Research and Training 181 / 190


Documentation Documentation et introspection

Python

Quelques constantes sur les fonctions

print(somme.__doc__)
# affiche calcule et retourne la somme des deux paramètres
# :param a: optionnel, valeur par défaut 0
I c

#
#
:type a: entier ou réel
:param b: optionnel, valeur par défaut 0
ELH
U
MO
# :type b: entier ou réel
#
# :rtype: entier ou réel
f E L
:return: résultat de la somme de deux paramètres a et b

#
chre
c A

print(somme.__name__)
# somme

print(somme.__defaults__)
# (0, 0)

H & H: Research and Training 182 / 190


Documentation Documentation et introspection

Python

c

Pour modifier la DocString de la fonction somme
I
somme.__doc__ = "addition" ELH
U
print(somme.__doc__) EL
MO
# affiche additionref
A ch
c

H & H: Research and Training 183 / 190


Constantes

Python

I c
Constantes
E L H
U
MO
Certains langages, comme Java, PHP..., permettent de définir
des constantes
fE L
c h
En Python, il y en r
a e
pas.

c A

H & H: Research and Training 184 / 190


Émulation du switch

Python

I c
switch
L H
Pas de switch ... case en PythonUE
M O
f
Plusieurs émulations proposL
E ées en utilisant les fonctions et les
dictionnaires
ch r e
c A

H & H: Research and Training 185 / 190


Émulation du switch

Python

Première solution
def switch(x):
return {
I c

1: "un",
ELH
U
MO
2: "deux",
3: "trois",
f E L
hre
4: "quatre"
}[x]
A c
c
print(switch(2))
# deux

H & H: Research and Training 186 / 190


Émulation du switch

Python

Deuxième solution
def switch(op, a, b):
return {
I c

’+’: lambda a, b: a
EL
+ H b,
U
MO
’*’: lambda a, b: a * b,
’/’: lambda a,
f E L b: a / b,

hre
’-’: lambda a, b: a - b
A c
}[op](a, b)
c
print(switch(’+’, 2, 3))
# affiche 5

H & H: Research and Training 187 / 190


Pylint

Python

Pylint

I c
H
Outil de vérification de qualité de code écrit en langage Python
ElaLPEP 8
O U
Utilisant principalement les propositions de
L M
f
Installation : pip install
r e E pylint
DocumentationA c:h
c
https://docs.pylint.org/en/1.6.0/index.html

H & H: Research and Training 188 / 190


Pylint

Python
Intégration sous PyCharm
Allez dans File > Settings... ou Ctrl Alt S
Allez dans Tools > External tools
I c
Cliquez sur +
E L H
O U
Saisissez pylint dans Name
L M
f El’installation dans Program
Saisissez le chemin vers
e
(généralement :rC:\Users\x\PycharmProjects\
A ch
cours-python\venv\Scripts\pylint.exe)
c
Saisissez
"--msg-template=’{abspath}:{line:5d},{column:2d}:
{msg id} : {msg} ({symbol})’" "$FilePath$" dans
Arguments
Validez

H & H: Research and Training 189 / 190


Pylint

Python

I c

Pour vérifier votre code
ELH
U
MO
Allez dans Tools > External Tools
L
Cliquez sur Pylint f E
c h re
c A

H & H: Research and Training 190 / 190

Vous aimerez peut-être aussi