TP - Implémenter une Pile☘
Ce TP doit conduire à créer de A à Z un module utilisable tout le reste de l'année.
Dans le dossier [NSI]
, créez le dossier intitulé [Mes_modules]
.
Téléchargez le fichier « à trous » piles.py (clic droit -> [Enregistrer sous]) et enregistrez-le dans ce dossier.
Remarque importante
La partie 1 a pour but d'implémenter une structure de pile correspondant
à l'interface vue en cours.
La partie 2 va compléter cette implémentation par de nouvelles méthodes,
ce qui pourra permettre de modifier l'interface...
Partie 1 - Interface de base☘
La classe Pile
sera munie d'un seul attribut nommé elements
. Cet attribut
est un tableau dynamique, c'est-à-dire de type list
en Python et vide par défaut.
Le sommet de la Pile est le dernier élement du tableau.
important
Les méthodes .append()
et .pop()
sont autorisées.
Pour la méthode .depiler()
, il est demandé de réaliser un test de validité
sous forme d'assertion (cf. le plan de test).
Le code à compléter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
Plan de test
>>> p = Pile()
>>> p.depiler()
AssertionError: La pile est déjà vide.
>>> p.empiler(7)
>>> p.empiler(3)
>>> p.empiler(0)
>>> p
0
3
7
>>> p.depiler()
0
>>> p
3
7
Vous pourrez tester votre interface en y faisant appel avec les programmes réalisés dans la page d'exercices.
Partie 2 - Interface améliorée☘
-
Modifiez l'initialisation de la classe de sorte qu'elle accepte un paramètre supplémentaire de type
list
afin de « remplir » la pile dès l'initialisation.Plan de test
>>> p1 = Pile([2, 4, 1, 5]) >>> p1 5 1 4 2 >>> p2 = Pile() >>> p3 = Pile() >>> p2.empiler(2) >>> p2 2 >>> p3.empiler(5) >>> p3 5
Remarque
Si vous n'obtenez pas les mêmes réponses pour
p2
etp3
que dans le plan de test ci-dessus, alors appelez l'enseignant : il vous mettra sur la voie. -
Ajoutez une méthode
.sommet()
qui renvoie la valeur du sommet sans dépiler celui-ci. Un test de validité de cette demande doit être réalisé sous forme d'assertion.Plan de test
>>> p1 = Pile([2, 4, 1, 5]) >>> p1.sommet() 5 >>> p1 5 1 4 2 >>> p2 = Pile() >>> p2.sommet() AssertionError: La pile est vide.
-
Ajoutez une méthode
.vider()
qui « vide » entièrement la pile.Plan de test
>>> p1 = Pile([2, 4, 1, 5]) >>> p1.vider() >>> p1
-
Ajoutez une méthode
.hauteur()
qui renvoie le nombre d'éléments contenus dans la pile.Plan de test
>>> p1 = Pile([2, 4, 1, 5]) >>> p1.hauteur() 4