File moi ta pile
Comment tester ses fonctions ?
Afin de tester ses fonctions, vous pouvez télécharger les fichiers ci-dessous. Une fois téléchargés, placez-les dans le même dossier que vos fichiers Pile.py et File.py afin qu'ils puissent utiliser vos implémentations de pile et de file.
Vous veillerez également à bien respecter les noms des classes et des méthodes lors de la rédaction des exercices.
Fichier pour tester ses piles
Fichier pour tester ses files
Importer des listes
Pour réaliser cet exercice, vous devez récupérer votre fichier (ou la correction) sur les listes chaînées. Une fois le fichier récupéré, vous devez également le placer dans le même dossier.
Pour importer le fichier (supposons qu'il s'appelle ListeChainee.py et que la classe s'appelle Liste), utilisez ensuite :
from ListeChainee import Liste
ma_liste = Liste()
# Ainsi de suiteQuestion
Implémentez les piles en Python. Votre classe doit se nommer Pile et doit comporter :
Une méthode
__init__qui crée une pile vide (correspondant à la primitivecreer_pile()).Une méthode
est_videqui indique si la pile est vide ou non.Une méthode
empilerqui empile dans la pile la valeur passée en paramètre. Cette méthode doit lever une exception si la valeur n'est pas du même type que les autres valeurs (s'il y en a).Une méthode
depilerqui dépile et renvoie la valeur en tête de la pile. Cette méthode doit lever une exception si la pile est vide.
Indice
Une solution possible peut être d'utiliser deux attributs dans notre Pile :
self.contenuqui est uneListe, permettant de stocker nos différentes valeurs présentes dans la pile.self.typequi représente le type des éléments dans la pile
Solution
Voici comment débuter votre fichier
from ListeChainee import Liste
class Pile:
""" Une pile permet de stocker des éléments de même type et de récupérer l'élément ajouté le plus récemment """def __init__(self):
""" Crée une pile vide (correspond à la primitive creer_pile()) """self.contenu = Liste() # Une pile sera stockée dans une liste chaînée.
self.type = None # Le type de la pile est stocké sous forme de variable.
def est_vide(self):
""" Indique si la pile est vide ou non. :return: True si la pile est vide, False sinon. :rtype: bool """ # TODO : À compléter passdef empiler(self, valeur):
""" Empile la valeur passée en paramètre dans la pile. Si la valeur n'est pas du même type que les autres valeurs, lève une exception. :param valeur: Valeur à empiler """ # TODO : À compléter passdef depiler(self):
""" Dépile et renvoie la valeur en tête de la pile. Si la pile est vide, lève une exception :return: La valeur de la tête de pile """ # TODO : À compléter passQuestion
Implémentez les files en Python. Votre classe doit se nommer File et doit comporter :
Une méthode
__init__qui crée une file vide (correspondant à la primitivecreer_file()).Une méthode
est_videqui indique si la file est vide ou non.Une méthode
enfilerqui enfile dans la file la valeur passée en paramètre. Cette méthode doit lever une exception si la valeur n'est pas du même type que les autres valeurs (s'il y en a).Une méthode
defilerqui défile et renvoie la valeur en tête de la file. Cette méthode doit lever une exception si la file est vide.
Indice
Une solution possible peut être d'utiliser deux attributs dans notre File :
self.contenuqui est uneListe, permettant de stocker nos différentes valeurs présentes dans la file.self.typequi représente le type des éléments dans la file
Solution
Voici comment débuter votre fichier
from ListeChainee import Liste
class File:
""" Une file permet de stocker des éléments de même type et de récupérer l'élément ajouté le moins récemment """def __init__(self):
""" Crée une file vide (correspond à la primitive creer_file()) """self.contenu = Liste() # Une file sera stockée dans une liste chaînée.
self.type = None # Le type de la file est stocké sous forme de variable.
def est_vide(self):
""" Indique si la file est vide ou non. :return: True si la file est vide, False sinon. :rtype: bool """ # TODO : À compléter passdef enfiler(self, valeur):
""" Enfile la valeur passée en paramètre dans la file. Si la valeur n'est pas du même type que les autres valeurs, lève une exception. :param valeur: Valeur à enfiler """ # TODO : À compléter passdef defiler(self):
""" Défile et renvoie la valeur en tête de la file. Si la file est vide, lève une exception :return: La valeur de la tête de file """ # TODO : À compléter passQuestion
Rajoutez dans vos classes une méthode voir() qui renvoie la valeur du prochain élément à dépiler ou défiler, mais sans le dépiler ou le défiler. En d'autres termes, cette méthode permet de jeter un coup d'œil à la liste.
Proposez ensuite une méthode dans les fichiers de test, afin de tester vos méthodes.
Question
Pour les plus rapides : Implémenter une file en utilisant deux piles.
Indice
Demandez des cartes à jouer à l'enseignant :)