Introduction à la programmation en Python
Fatima Belkouch
S1 STID IUT - Université de Lille
1er septembre 2022
1 / 41
Programme de l’année
1 Généralités
2 Python : Environnement de travail
3 Variables - Types - Expressions
4 Instructions de contrôle : conditions et répétitives
5 Structure de données : listes, tuples, dictionnaires et ensembles
6 Fonctions et modules
7 Manipulation de fichiers et gestion des exceptions
8 Compléments et Notions avancées
2 / 41
Organisation du cours : 4 polycopiés
Le contenu du cours Python de toute l’année BUT 1 est organisé en 4
polycopiés
Poly. 1 : Les bases en Python
Généralités
Python : Environnement de travail
Variables - Types - Expressions
Instructions de contrôle : conditions et répétitives
Poly. 2 : Les structures de données en Python
Les listes
Les tuples
Les dictionnaires
Les ensembles
3 / 41
Poly. 3 : Les fonctions et modules
Les fonctions
Les modules
Poly. 4 : Les fichiers texte et csv
Les fichiers texte
Les fichiers csv (avec les listes uniquement)
Poly. 5 : Compléments et notions avancées
Les exceptions
Compléments et notions avancées
Semestre 1, les chapitres :
Poly. 1 : Les bases en Python
Poly. 2 : Les structures de données - uniquement les listes
Ploy. 3 : Les fonctions et modules - uniquement les fonctions
Ploy. 4 : Les fichiers - texte et csv avec listes
4 / 41
Poly 1. : Les bases en Python
5 / 41
Programmes et langages
Programmes d’un ordinateur
Dans un ordinateur, on distingue deux sortes de programmes :
Le système d’exploitation :l’ensemble des programmes qui gèrent les
ressources matérielles et logicielles. Il propose une aide au dialogue
entre l’utilisateur et l’ordinateur : l’interface textuelle (interpréteur de
commande) ou graphique (gestionnaire de fenêtres). Il est souvent
multi-tâches et parfois multi-utilisateurs
Les programmes applicatifs sont dédiés à des tâches particulières. Ils
sont formés d’une série de commandes contenues dans un programme
source qui est transformé pour être exécuté par l’ordinateur.
6 / 41
Programmes et langages
Niveaux de langages
Il y a différents niveaux de langages :
Chaque processeur possède un langage propre, directement
exécutable : le langage machine. Il est formé d’une suite de 0 et de 1
appelés bits, souvent traités en groupes de 8 (octet), 16, 32 ou 64
bits. Il n’est pas portable, mais c’est le seul que l’ordinateur puisse
utiliser. Il n’est pas facile de programmer en binaire.
Le langage d’assemblage est un codage alphanumérique du langage
machine. Ses instructions sont très élémentaires. Il est plus lisible que
le langage machine, mais n’est toujours pas portable. On le traduit en
langage machine par un assembleur.
les langages de haut niveau. Souvent normalisés, ils permettent le
portage d’une machine à l’autre. Ils sont composés d’instructions plus
abstraites et plus puissantes. Ils sont traduits en langage machine par
un compilateur ou un interpréteur.
7 / 41
Langages
Langage machine
Le langage machine est un langage binaire directement compréhensible par
la machine.
Langage Assemblé
dit aussi Assembleur est un langage bas niveau très facilement traduisible
pour être compris par la machine.
Langage de programmation
est un langage compréhensible par l’humain. Il doit être compilé ou
interprété pour être compris par la machine.
8 / 41
Production de programmes : compilateur vs interpréteur
Deux techniques : la compilation et l’interprétation
La compilation
La compilation traduit le code source d’un programme dans son
ensemble en langage objet. Cela consiste en une phase d’analyse
lexicale, syntaxique et sémantique plus une phase de production de
code objet. Pour générer le langage machine il faut encore une phase
particulière : l’édition de liens.
La compilation est contraignante mais offre au final une grande
vitesse d’exécution.
Un langage de programmation pour lequel un compilateur est
disponible est appelé un langage compilé.
9 / 41
Production de programmes : compilateur vs interpréteur
L’interprétation
Chaque ligne du source analysé est traduite au fur et à mesure en
instructions directement exécutées.
Aucun programme objet n’est généré.
Cette technique est très souple mais les codes générés sont peu
performants : l’interpréteur doit être utilisé à chaque exécution...
Un langage de programmation pour lequel un interpréteur est
disponible est appelé un langage interprété.
10 / 41
Production de programmes : compilateur vs interpréteur
Techniques mixtes : l’interprétation du bytecode compilé est un bon
compromis entre la facilité de développement et la rapidité
d’exécution. Exemple : le cas de Python.
Le bytecode est une forme intermédiaire, portable sur tout ordinateur
muni de la machine virtuelle Python.
Pour exécuter un programme :
Python charge le fichier source .py en mémoire, en fait l’analyse
syntaxique, produit le bytecode et enfin l’exécute.
Pour chaque module importé par le programme, Python vérifie d’abord
s’il existe une version précompilée du bytecode dont la date correspond
au fichier .py.
S’il y en a un, Python l’utilise, sinon il fait une analyse syntaxique du
module .py, et utilise le bytecode qu’il vient de générer.
Pas besoin de compiler explicitement un module, Python gère ce
mécanisme de façon transparente.
11 / 41
Construction de programmes
Plusieurs modèles sont possibles, entre autres :
la méthodologie procédurale. tente de structurer d’abord les
traitements (actions). Elle consiste à diviser le problème en
sous-problèmes plus simples (analyse descendante), et ensuite
réutiliser au maximum les sous algorithmes (analyse remontante).
la méthodologie objet. décortique le problème sous un angle
différent : partir de ”Sur quoi porte le programme ?” et non plus de
”Que doit faire le programme ?”. Elle tente de structurer d’abord les
données (dans des objets) auxquelles elle associe des traitements
(actions). C’est une représentation qui se rapproche du monde réel.
Le système est un ensemble d’objets qui interagissent entre eux et
avec le monde extérieur (à l’aide de méthodes).
Python offre les deux techniques. Nous verrons au :
BUT1 : Programmation procédurale + utilisation des objets (Bases
de la programmation).
BUT2 : Programmation objet (Programmation avancée).
12 / 41
Algorithme - Programme
Un algorithme : un ensemble d’instructions décrivant les étapes de
résolution d’un problème.
Un programme : est la traduction d’un algorithme en un langage de
programmation (compilable ou interprétable).
Un programme est souvent écrit en plusieurs parties dont une qui
pilote les autres : le programme principal.
13 / 41
Mettre en place un programme
Développer : les étapes
Ecrire le code dans un éditeur de texte
Sauvegarder dans un fichier
Compiler et interpréter le code
Corriger les erreurs. On dit aussi ”debug”
Recommencer l’étape précédente jusqu’à ce qu’il n’y ait plus d’erreur
Effectuer des tests et améliorer si besoin.
Présentation d’un programme : le code source est destiné à l’être
humain. Pour en faciliter la lecture, il doit être judicieusement commenté.
En Python, un commentaire commence par le caractère # et s’étend
jusqu’à la fin de la ligne :
14 / 41
Trois types d’erreurs 1/2
Erreurs de syntaxe : sont des erreurs dues au non respect des règles
de syntaxe du langage de programmation utilisé. Elles sont détectées
et provoquent l’arrêt du programme. L’utilisateur est alerté par un
message.
Exemple
Syntaxe correcte : Nom= "Dupont"
Code écrit : Nom = Dupont l’oubli des guillemets est une erreur de syntaxe
Erreurs de sémantique : sont des erreurs de logique. Elles ne sont pas
détectées et ne gênent pas l’exécution du programme mais le résultat
n’est pas celui attendu.
Exemple
La surface d’un rectangle Surface = Largeur*Longueur
Le calcul de la surface avec le code : Surface = Largeur/Longueur
est une erreur sémantique
15 / 41
Trois types d’erreurs 2/2
Erreurs d’exécution : ce sont des erreurs qui apparaissent quand le
programme est en cours d’exécution. Elles sont liées au contexte
d’exécution. Elles sont détectées lorsque quelque chose d’inhabituel
gêne l’exécution comme lire un fichier qui n’existe pas.
Exemple
Le code suivant génère une erreur à l’exécution :
A=50
B=100-2*A
C=A/B
Une division par 0 est une erreur qui se produit à l’exécution.
16 / 41
Le langage Python
Python
Python est un langage de programmation haut niveau,
Il a été créé en 1989 par Guido van Rossum.
Ses principales caractéristiques :
portable,
gratuit,
dynamique,
extensible,
modulaire,
et orienté objet.
Il a une syntaxe simple et intuitive et un niveau d’abstraction élevé.
La version actuelle est Python 3.7 (2018) et le langage continue à
évoluer...
17 / 41
Environnement de travail : Programmation en Python
Anaconda
Anaconda est une distribution libre et open source de gestion de
paquets pour les langages Python et aussi R appliqué au
développement d’applications dédiées à la science des données et à
l’apprentissage automatique.
Il permet de nombreuses fonctionnalités : la possibilité d’installer des
librairies et de les utiliser dans les programmes, l’accès à plusieurs
logiciels pour faciliter le développement et le test des programmes.
L’accès à ses services via : Anaconda Navigator ou Anaconda Prompt.
Spyder est outil intégré dans Anaconda.
18 / 41
Anaconda Navigator
Une interface d’accès aux logiciels installés dans la suite Anaconda :
permet de contrôler les librairies utilisées par le programme, vérifier si
celles-ci sont bien à jour. Il offre de la documentation, un espace de
partage communautaire, un service de Cloud...
19 / 41
Anaconda Prompt
C’est une console ”interpréteur de commandes” permettant de taper des
commandes comme par exemple l’exécution d’un programme python, ou
encore l’installation d’une librairie... C’est l’équivalent d’un IDLE
disponible initialement dans Python.
20 / 41
Spyder
Spyder est un logiciel intégré dans Anaconda. Il permet de développer et
tester les projets utilisateurs. Il est accessible via Anaconda Navigator. Il se
divise en trois parties majeures, eux-mêmes divisibles.
Trois parties : Un éditeur de texte, un explorateur et une console.
21 / 41
Premier script en Python
Exemple
print("Bonjour tout le monde !")
Exécution :
Mode interactif : Taper cette instruction (commande) dans une
console (celle de Spyder ou celle de l’IDE de Python) et valider.
L’interpréteur Python s’exécute et le message s’affiche.
Remarque
Utiliser Python en ligne de commande dans l’interpréteur ne permet pas de
sauvegarder le code. On ne peut donc pas relancer le même code plusieurs
fois pour faire des tests sur des données différentes.
Programme Python : Saisir le code dans l’éditeur de texte et le
sauvegarder dans un fichier avec l’extension .py (Ex test.py).
Exécuter :
via l’interface graphique de Spyder
via la ligne de commande en tapant python test.py soit dans la console
de Spyder ou dans fenêtre de commandes (DOS sous Windows) 22 / 41
Variables - Types - Affectation
Variable
Une variable est un nom qui référence une valeur en mémoire ;
Le type d’une variable est le type de la valeur qu’elle référence.
Affectation
nom = expression, où expression est une valeur ou un calcul qui
produit une valeur.
Exemple
a=3
b = ’STID’
c=a+2
a=a+1
23 / 41
Variables - Types - Affectation
Type
Les valeurs possèdent un type. Ce type va déterminer ce qui se passe
quand on fait une opération sur des valeurs.
Le type d’une variable est le type de la valeur qu’elle référence.
Les principaux types de base sont :
Type En python Exemples
entier int 12, -4, 123545, . . .
flottant float 3.14159, -1.5, 12., 4.56e12, . . .
booléen bool True (vrai) ou False (faux)
indéfini, rien None None
chaı̂ne de caractères str ’bonjour’, ’IUT STID’, . . .
Attention
Les majuscules-minuscules sont importantes : True 6= true
24 / 41
Variables - Types - Affectation
Nommage
Il y a certaines règles de nommage à respecter pour les variables (et
fonctions introduites plus loin dans le cours) :
Le nom commence par une lettre majuscule ou minuscule et est
composé d’une suite de lettres et de nombres
Le caractère ”underscore” est considéré comme une lettre
Les caractères spéciaux ne sont pas acceptés : accent, cédille, espace...
Le nom ne peut pas être un mot réservé de Python
Le nom ne peut pas être un nom d’un type (Exemple : int, float) ou
d’une fonction prédéfinie (Exemple : print, input)
Exemples :
age1 =18
annee nais =’12/10/2001’
3age = 18 #faux
25 / 41
Variables - Types - Affectation
Mots réservés
Les mots suivants sont réservés pour le langage :
and as assert break class continue
def del elif else except finally
for from global if import in
is lambda nonlocal not or pass
raise return try while with yield
True False None
Dans l’éditeur la coloration syntaxique d’un mot veut dire qu’il s’agit
d’un mot réservé
26 / 41
Transtypage
La fonction type() permet de connaı̂tre le type d’une valeur
Il est possible de changer le type d’une valeur (le transtypage)
str( ?) convertit en chaine de caractères
int( ?) convertit en entier, quand cela est possible
float( ?) convertit en flottant, quand cela est possible
bool( ?) convertit en booléen
Exemples
Instruction Résultat Instruction Résultat Instruction Résultat
type(10) ? type(-10) ? type(’01’) ?
type(0) ? type(2.5) ? type(’1.0’) ?
type(’STID’) str type(true) ? type(’false’) str
int(4.5) 4 int(-4.5) -4 int(’0345’) 345
int(’IUT’) erreur float(4) 4 float(’4.5’) 4.5
str(4) ’4’ str(True) ’True’ str(-4.5) ’-4.5’
bool(4) True bool(0) False bool(’IUT’) True
27 / 41
Variables - Types - Affectation
En pratique, on se sert surtout de :
str qui fonctionne tout le temps.
int et float appliqués à une chaine de caractères donne un nombre.
Attention : int(’1’) fonctionne, mais pas int(’1.2’) !
int appliqué à un float pour tronquer les décimales
bool qui donne False si son paramètre équivaut à 0, True sinon
A retenir pour les booléens
Python attribue à une expression booléenne la valeur False si c’est :
la constante False
la constante None
une séquence ou une collection vide
une donnée numérique de valeur 0
Tout le reste vaut True.
28 / 41
Opérateurs et expressions
Opérateurs sur les nombres
Opérateur Opération Opérateur Opération
+ somme − différence
∗ produit / division numérique
// division Euclidienne % reste de la division
(modulo)
∗∗ puissance
Opérateurs logiques
Opérateur Opération Opérateur Opération Opérateur Opération
ET et OR ou NOT négation
Opérateurs sur les chaines de caractères
Opérateur Opération Opérateur Opération
+ concaténation ∗ répétition
29 / 41
Opérateurs et expressions
Opérateurs de comparaison
Opérateur Opération Opérateur Opération
== égal != différent
> strictement supérieur < strictement inférieur
>= supérieur ou égal <= inférieur ou égal
Les opérations suivent les règles de priorités usuelles.
Il existe des fonctions prédéfinies pour appliquer d’autres opérations
sur les nombres et aussi les chaines de caractères.
Affectations multiples
Instruction Résultat Instruction Résultat
x =y =1 x=1 et y=1 x, y = 1, 2 x=1 et y=2
Remarque : x, y = y , x échange la valeur de x et de y.
30 / 41
Fonctions prédéfinies : print et input
print
La fonction print(str) permet d’afficher ce qui est entre parenthèse sur
la sortie standard (l’écran).
Exemple : print(’Bonjour !’) ;
age=18
print(’Vous avez’,age,’ans’)
input
La fonction input(str) permet à l’utilisateur de saisir une valeur au clavier
Exemple : valeur = input (’Entrez votre année de naissance : ’)
la chaine ’Entrez votre année de naissance :’ est affichée à l’écran
le programme attend que soit rentrée une chaine
le programme affecte cette valeur à la variable valeur
la fonction input renvoie toujours une chaine de caractères
on a donc besoin de la convertir en entier : annee=int(valeur )
31 / 41
Structure d’un programme Python
Que contient un programme ?
l’encodage facultatif
toutes sortes de commentaires
l’importation des modules utilisés
la définition des fonctions utilisateur
et le programme principal
Commentaires
Une ligne : avec le caractère # au début
# commentaire
Plusieurs lignes : avec des trois quotes doubles ” ou simples ’
””” ligne 1
ligne 2
”””
32 / 41
Structure d’un programme Python
33 / 41
Exemple : Premier Programme (Structure simplifiée)
Règles de base
En Python, il n’y a qu’une instruction par ligne.
Les lignes ne commencent pas toutes au même endroit
Le positionnement (indentation) des lignes est important.
On appelle bloc d’instructions un ensemble d’instructions qui se
suivent et avec la même indentation.
Modifier l’indentation modifie le comportement du programme.
Les instructions sont exécutées dans l’ordre, de haut en bas.
34 / 41
Instructions conditionnelles
Une instruction simple tient sur une seule ligne. Exemple : x=10
Une instruction composée se compose d’une ligne d’en-tête terminée
par : et d’un bloc d’instructions indenté par rapport à la ligne
d’en-tête.
L’instruction if (SI en Algorithmique) est une instruction composée.
Condition if
ligne-entête
if expression :
instruction 1 du if
instruction 2 du if
...
fin
35 / 41
Instructions conditionnelles
Condition if
#ligne-entête
if expression :
instruction 1 du if
instruction 2 du if
#fin
expression renvoie un booléen (True ou False)
les instructions du bloc du if sont effectuées uniquement si l’expression est
évaluée à True
dans tous les cas, le programme reprend à l’instruction après if fin
On peut mettre autant de conditions que l’on veut dans un if.
Exemple : if a < b and (b == 2 ∗ c or b == 3 ∗ c) :
Ces conditions sont évaluées dans l’ordre où elles sont écrites
Si la première condition d’un and est fausse, alors la suite n’est pas évaluée
(le cas de a = 2 et b = 1 dans l’exemple).
36 / 41
Exemple
Condition if - else
ligne entête
if expression :
instruction 1 du if
...
else :
instruction 1 du else
...
fin
37 / 41
Instructions conditionnelles
Il est possible d’imbriquer plusieurs instructions conditionnelles
L’imbrication nécessite une indentation de blocs
Condition if - else
ligne entête
if expression :
instruction 1 du if
...
elif expression :
instruction 1 du elif
...
else :
instruction 1 du else
...
fin
38 / 41
Instructions répétitives
while (TANT QUE) et for (POUR) permettent de boucler sur un
traitement
break sert à interrompre une boucle.
continue sert à court-circuiter une boucle (passer directement à
l’itération suivante).
Boucler avec : while
ligne-entête
while condition :
instruction 1 de while
instruction 2 de while
...
fin
les instructions du bloc du while sont effectuées uniquement si la
condition est évaluée à True.
une fois sorti de la boucle, le programme reprend à l’instruction après
while fin 39 / 41
Instructions répétitives
Parcourir avec : for
for i in range(1,10) : # pour i allant de 1 à 9 avec pas de 1
instruction 1 du for
instruction 2 du for
...
range(1,5) : génère 4 entiers de 1 à 4
range (5) : génère 5 entiers de 0 à 4 (idem que range(0,5))
range(1,10,2) : génère des entiers à partir de 1 avec un pas de 2
for fonctionne en général avec les listes introduites dans la partie 2
du cours.
Exemple
print(’Les 10 premiers multiple de 3 :’)
for i in range(1,11) :
print(i ∗ 3, end=” ”) # nombres affichés espacés sur la même ligne
40 / 41
Poly. 2 : Structures de données (à suivre)
41 / 41