TP Python
TP Python
TP Python
TP DE LANGAGE P YTHON 3
2014-2015
Maude Manouvrier
La rédaction de ce TP a été réalisé à l’aide des tutoriels et livres en ligne, cités à la fin de ce document, ainsi
que du TP de M. Menceur qui faisait ce cours en 2010-2011.
Ce TP va vous permettre d’apprendre le langage Python 3 par l’exemple, à l’aide de petits exercices.
Contents
1 Prise en main de Python 3
1.1 Programmation Python en ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5 Structures de données 10
5.1 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2 Dictionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Références et adresses 12
1
7 Fonctions 13
7.1 Fonctions Python existantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7.2 Fonction simple sans paramètre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7.3 Fonction avec paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.4 Valeur par défaut des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.5 Affecter une instance de fonction à une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.6 Fonction avec un nombre variable de paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.7 Passage des paramètres : immuable et non immuable . . . . . . . . . . . . . . . . . . . . . . . . 15
7.8 Variable locale/variable globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.9 Fonction anonyme (lambda function) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8 Fichiers 17
8.1 Instanciation du répertoire courant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8.2 Manipulation de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.3 Copie de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.4 Copier des variables dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
10 Programmation orientée-objet 19
10.1 Premier exemple de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10.2 Accessibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.3 Objet complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.4 Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2
Python, développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles, est un langage
à typage dynamique (i.e. le type des objets manipulés n’est pas forcément connu à l’avance mais est défini ÃÂ par-
tir de la valeur de la variable) et fortement typé (i.e. qu’il garantit que les types de données employés décrivent
correctement les données manipulées). Il est doté ’d’une gestion automatique de la mémoire par ramasse-miettes
(pas de gestion de pointeurs!!!) et d’un système de gestion d’exceptions.
Le langage Python peut être interprété (interprétation du bytecode compilé) ou traduit en bytecode, qui est en-
suite interprété par une machine virtuelle Python. Il est interfaçable avec des langages comme le C, le C++ ou
Java.
Pour la réalisation de ce TP, vous êtes invités à lire ce qui suit dans le document, tout en vous aidant de la docu-
mentation en ligne et des ouvrages référencés à la fin du document et dont les liens sont accessibles à partir de la
page Web : http://www.lamsade.dauphine.fr/∼manouvri/PYTHON/CoursPython_MM.html.
Il est possible de programmer en Python en ligne de commande, c’est-à-dire en saisissant et en exécutant les
instructions les unes à la suite des autres. Ceci se fait via un interpréteur de commandes (voir section 1.1). Il est
également possible de saisir toutes les instructions d’un programme dans un fichier et d’exécuter ce programme
(voir section 2).
Pendant les TP, vous aurez deux manières de programmer en Python: soit en utilisant l’interpréteur de com-
mandes (en exécutant la commande Python depuis un terminal) et en saisissant vos programmes dans un éditeur
de texte de votre choix, soit via l’outil IEP (Interactive Editor for Python - voir section 2) qui contient, dans la
même interface, un interpréteur de commandes et un éditeur de texte. La section 2.1 vous indique comment in-
staller Python sur votre machine personnelle et vous présente également l’interface graphique d’un outil (IDLE),
l’environnement de développement intégré pour le langage Python.
Pour exécuter un programme tapé dans un fichier (d’extension .py), il suffit de saisir la commande suivante
dans un terminal : python MonProgramme.py
Pour quitter l’interpréteur de commandes, il faut taper l’instruction exit() ou quit().
3
Figure 1: Interface de l’outils IEP.
Pour exécuter un programme, il suffit de cliquer sur l’onglet correspondant après l’avoir ouvert puis de sélec-
tionner dans le menu Exécuter le fichier (ou Ctrl-E).
Pour installer ce logiciel sur votre machine personnelle, vous devez préalablement avoir installé Python (voir
section suivante). Puis vous devez télécharger la version correspondant à votre machine à l’adresse (un fichier
d’extension .exe sous windows) : www.iep-project.org/downloads.html. Attention, sous windows,
le logiciel installe une icône sur le bureau.
• Telecharger le fichier (d’extension .msi pour Windows installer) correspondant à la configuration de votre
machine (voir figure 2 par exemple).
4
Figure 3: Installer l’interface IDLE sous Windows.
L’installation de Python (voir section précédente) génère également l’installation d’une interface, appelée IDLE
(Python GUI). Cette interface vous permet de saisir des instructions en ligne de commande mais également
d’exécuter des programmes Python enregistrés dans des fichiers. Contrairement à l’interface de l’outil IEP (voir
section 2), l’interpréteur de commandes et l’éditeur de texte sont dans des fenêtres séparées.
Une fois la dernière version de Python installée, l’interface IDLE est disponible depuis le menu démarrer
(repertoire Python x.y avec x.y le numéro de la version de Python installée). Il suffir de cliquer sur IDLE
(Python GUI) – voir figure 4 – qui va vous ouvrir l’interface graphique (interpréteur de commandes en ligne)
oÃ1 vouspourreztapervosinstructionsP ythonenlignedecommande.
Pour écrire un programme dans un fichier, dans le menu File, sélectionnez New File. Une nouvelle fenêtre
s’ouvre. Tapez votre programme Python dans cette fenêtre (attention aux indentations). Pour exécuter votre pro-
gramme, allez dans le menu Run et faites Run Modules (ou F5) – voir figure 7. Il va vous être demandé de faire
une sauvegarde de votre fichier (qui a généralement l’extension .py) – voir figure 6 –, puis votre programme
s’exécutera (dans la fenêtre en ligne de commande précédemment ouverte). Le début de l’execution de votre pro-
gramme est indiqué dans la fenêtre en ligne de commande par:
============================= RESTART =============================
Dans le menu File vous pouvez également ouvrir un programme existant. Pour passer d’une fenêtre à une autre,
vous pouvez utiliser le menu Windows – voir figure 8.
5
Figure 6: Enregistrer un programme Python dans un fichier (d’extension .py) via l’interface IDLE.
Figure 7: Exécuter un programme Python depuis un fichier (d’extension .py) via l’interface IDLE.
Les lignes commençant par >>> correspondent aux instructions. Les lignes situées juste en dessous correspondent
à l’affichage après exécution de l’instruction (i.e. après avoir tapé <Enter>).
Vous êtes invités à taper les exemples ci-dessous pour vous entaîner et à répondre à chaque question as-
sociée aux exemples.
6
Figure 8: Gestion des fenêtres sous l’interface IDLE.
>>> b/c
0.7142857142857143
>>> b//c
0
>>> b%c
5
>>> d=1.1
>>> d/c
0.15714285714285717
>>> d//c
0.0
4.2 Affichage
Exemple 2 : Utilisation de la fonction d’affichage print()
>>> print(a+b) # a et b sont les variable de l’exercice 1
8
>>> print(’la valeur de’, a,’+’,b,’est :’, a+b)
(’la valeur de’, 3, ’+’, 5, ’est :’, 8)
7
>>> 2+’1.5’
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: unsupported operand type(s) for +: ’int’ and ’str’
>>> 2+eval(’1.5’) # Pour \’eliminer l’erreur pr\’ec\’edente
3.5
8
Attention : En Python il n’y a pas, comme dans certains langages, d’accolade ouvrante ou fermante pour délimiter
un bloc d’instructions. Les blocs d’instructions en python sont délimités par ":" puis des tabulations : toutes les
instructions consécutives à un ":" et débutant par un même nombre de tabulations appartiennent à un même bloc
d’instructions.
a=0
while(a<12): # Ne pas oublier les deux points!!
a=a+1 # Ne pas oublier la tabulation en debut de ligne!!
print(a, a**2,a**3) # Ne pas oublier la tabulation en debut de ligne!!
# Tapez encore une fois <Enter> si vous Ãa tes en ligne de commande
a=0
if a==0: # Ne pas oublier les deux points!!
print(’0’) # Ne pas oublier la tabulation en debut de ligne!!
elif a==1: # Ne pas mettre de tabulation et ne pas oublier les deux points!!
print(’1’) # Ne pas oublier la tabulation en debut de ligne!!
else: # Ne pas mettre de tabulation et ne pas oublier les deux points!!
print(’2’) # Ne pas oublier la tabulation en debut de ligne!!
# Tapez encore une fois <Enter> si vous Ãa tes en ligne de commande
9
5 Structures de données
5.1 Listes
Exercice 7 : Manipulation des listes
Tapez chacune des insctructions suivantes (en ligne de commande) et observez le résultat.
10
>>> list=[1,"ab",[1,True]] # liste imbriquee
>>> list[2]
>>> print(list(range(10)))
>>> print(list(range(1,10)))
>>> print(list(range(1,10,3)))
>>> help(list) # pour l’aide sur les listes
Exercice 8 : Ecrivez une programme qui demande à l’utilisateur d’entrer des notes d’élèves. Si l’utilisateur
entre une valeur négative, le programme s’arrête. En revanche, pour chaque note saisie, le programme construit
progressivement une liste. Après chaque entrée d’une nouvelle note (et donc à chaque itération de la boucle), il
affiche le nombre de notes entrées, la note la plus élevée, la note la plus basse, la moyenne de toutes les notes.
Astuce : Pour créer une liste vide, il suffit de taper la commande list = [].
5.2 Dictionnaire
Exercice 9 : Tapez le code suivant2 et observez le résultat.
11
>>> print(dico2)
>>> dico3=dico.copy() # dico3 est une copie du dictionnaire reference par dico!
>>> del dico3[’keyboard’]
>>> print(dico)
>>> print(dico3)
>>> help(dict) # pour l’aide sur les dictionnaires
6 Références et adresses
En python, tout est objet, y compris les valeurs. Les variables sont des références à des valeurs.
12
>>> list is list2 # Pour tester l’identite memoire
True
>>> list[0] is 1
True
>>> list is list3
False # list et list3 correspondent a la mÃa me liste
# mais a 2 emplacement memoire differents
>>> list[0] is list3[0]
True
int
1
int
2
list
32461144 str
32461120 "abc"
471621137342672
471621137317576 int
list 42
3246152
int
32466071 17
7 Fonctions
7.1 Fonctions Python existantes
La liste des fonctions Python existantes est disponible en ligne à l’adresse :
https://docs.python.org/3/library/functions.html
>>> def function(): # Definition de fonction sans parametre - Ne pas oublier les :
... n=10 # Faire une tabulation en debut de ligne
... while n>0: # Faire une tab. en debut de ligne et ne pas oublier les :
... print(n/2, n%2) # Faire 2 tabulations en debut de ligne
... n=n-1 # Faire 2 tabulations en debut de ligne
# Tapez encore une fois <Enter> si vous etes en ligne de commande
>>>function() # Appel de la fonction
3
Reprise et adapté de http://judicael.courant.free.fr/pro/2014/ic1a/cours/05-memoire.poly.pdf
13
Exercice 11 : Définir une fonction sans paramètre qui appelle une autre fonction
Tapez le code suivant et observez le résultat.
>>> def function2(): # Ne pas oublier les : et une tab. sur la ligne suivante
... print(’Affichage du resultat et du reste de la division des entiers de 10 \’
... function() # Faire une tabulation en debut de ligne
# Tapez encore une fois <Enter> si vous etes en ligne de commande
>>> function2()
14
Exercice 17 : Tapez le code suivant et observez le résultat.
>>>def multiplication(n,p):
... return n*p # pour retourner une valeur
# Tapez encore une fois <Enter> si vous Ãa tes en ligne de commande
>>> a=multiplication(3,6)
>>> a
# les valeurs des arguments saisis vont etre stockes dans un t-uple - cf. print(type
def fonction_test(*args):
print("type de args :",type(args))
for arg in args:
print("paramètre:", arg)
print()
fonction_test()
fonction_test(1)
fonction_test(1,"a")
fonction_test(1,"a",3)
Exercice 19 : Ecrire une focntion qui calcule la somme des entiers passés en paramètres.
Exercice 20 : Tapez le code de cette mauvaise fonction echange dans un fichier, exécutez le et analysez le
résultat.
def incr(a):
print("adresse a: ",id(a))
a=a+1
print("Dans la fonction a =",a)
def ajouter(l):
l=l.append(5)
15
a=3
print("adresse a: ",id(a))
incr(a)
print("Apres l’appel a=",a)
l=[1,2,3]
ajouter(l)
print("l=: ",l)
def echange(a,b):
print("adresses des parametres : ", id(a),id(b))
c=a
a=b
b=c
x,y = 2,3
print("adresses de x et de y : ", id(x),id(y))
echange(x,y)
print("x=",x)
print("y=",y)
Si vous exécutez le code précédent, vous verrez que les variables x et y n’ont pas été échangées car il s’agit de
variables non immuables.
def echange2(a,b):
c=a
a=b
b=c
return a,b
x,y = 2,3
x,y=echange2(x,y) # les valeurs de x et y sont bien echangees car
# on les modifie leur valeur ici
print("x=",x)
print("y=",y)
print() # pour sauter une ligne
a=2
b=3
a,b=echange2(a,b) # les valeurs de a et b sont bien echangees car
# on les modifie leur valeur ici
print("a=",a)
print("b=",b)
print()
16
Exemple 12 : Autre exemple de fonction echange qui fonctionne
def echangeab():
global a # a est la variable globale du programme
global b # b est la variable globale du programme
c=a
a=b
b=c
a=2
b=3
echangeab()
print("a=",a)
print("b=",b)
8 Fichiers
8.1 Instanciation du répertoire courant
Exemple 13 : modifier le répertoire courant de l’interpréteur
La première ligne permet d’importer la commande chdir() du module os contenant une série de fonctions
permettant de dialoguer avec le système d’exploitation (os = operating system).
La deuxième ligne permet de spécifier le répertoire courant de l’interpréteur python, i.e. le répertoire où il va
récupérer les fichiers.
4
Repris et adapté de http://www.secnetix.de/olli/Python/lambda_functions.hawk
17
8.2 Manipulation de fichiers
Exercice 22 : Tapez le code suivant et observez le résultat.
>>> a = 5
>>> b = 2.83
>>> c = 67
>>> f = open(’test.txt’, ’w’)
5
Repris de Apprendre à programmer avec Python de Gérard Swinnen, 2009
18
>>> f.write(str(a)) # Pour ecrire un entier converti en string
>>> f.write(str(b))
>>> f.write(str(c))
>>> f.close()
>>> f = open(’test.txt’, ’r’)
>>> print(f.read())
>>> f.close()
10 Programmation orientée-objet
10.1 Premier exemple de classe
Exercice 26 : Récupérez le fichier
http://www.lamsade.dauphine.fr/∼manouvri/PYTHON/EXEMPLES/ExempleClasse1.py
étudiez le code en ouvrant le fichier et exécutez le.
19
10.2 Accessibilité
Exercice 28 : Reprendre la classe de l’exercice précédent et remplacer nom par __nom. Exécutez à nouveau
l’exemple de l’exercice précédent. Observez le résultat.
10.4 Héritage
Exercice 30 : Récupérez le fichier
http://www.lamsade.dauphine.fr/∼manouvri/PYTHON/EXEMPLES/formes.py
étudiez le code en ouvrant le fichier et exécutez le.
• Livre et exercices corrigés en ligne sur Python 2 et 3 : Apprendre à programmer avec Python de Gérard
Swinnen, 2009 - http://inforef.be/swi/python.htm
• Livre (format pdf) en ligne sur Python 3: Introduction à Python 3 de Robert CORDEAU, 2010
http://www.afpy.org/Members/bcordeau/Python3v1-1.pdf/download
• Tutoriel en ligne pour développer en Python sous Eclipse: Python Development with PyDev and Eclipse
- Tutorial de Lars Vogel, 2011 - http://www.vogella.de/articles/Python/article.html
• Tutoriel en ligne : A Quick, Painless Tutorial on the Python Language de Norman Matloff
20