Files
TermNSI/Pile_File/TP/File.py

139 lines
3.6 KiB
Python

#PARTIE
class File1 :
def __init__(self,liste = []) :
"""
Méthode d'initialisation
param liste : (List) Liste d'élément à enfiler dès l'initialisation
"""
self.file = liste
def enfile(self,x) :
"""
Méthode qui enfile un élément x
param x : () Elément x à enfiler
"""
self.file = [x] + self.file
def defile(self) :
"""
Méthode qui defile un élément de la file
return : (bool/ ) False si impossible de retirer l'élément / Elément sinon
"""
if not self.est_vide() :
return self.file.pop()
else :
return False
def est_vide(self):
"""
Méthode testant la longueur de la file
return : (bool) True si la file est vide, False sinon
"""
return len(self.file) == 0
def taille(self):
"""
Méthode retournant la taille de la file
return : (int) taille de la file
"""
return len(self.file)
def get_file(self):
"""
Méthode retournant la file sous forme de liste pour en avoir un aperçu
return : (list) file sous forme de list
"""
return self.file
# EXERCICE 2
def ajout_element(self,element):
"""
Fonction qui ajoute un élément, si la taille le permet.
return (bool): Renvoie True si l'ajout de l'élément a eu lieu, False sinon
"""
if file.taille() < 5 :
file.enfile(fichier)
return True
else :
return False
def vide_file(self):
"""
Fonction qui vide une file et affiche ces éléments
"""
while file.est_vide() == False :
e = file.defile()
print(e)
# PARTIE 3 :
class File2 :
def __init__(self,tete = None,queue = None):
"""
Méthode d'initialisation
param tete : () Element a mettre en tete de file
param queue : (File) queue de la file (élements suivants)
"""
self.tete = tete
self.queue = queue
def enfile(self,x) :
"""
Méthode qui enfile un élément x
param x : () Elément x à enfiler
"""
self.queue = File2(self.tete,self.queue)
self.tete = x
def defile(self) :
"""
Méthode qui defile un élément de la file
return : (bool/ ) False si impossible de retirer l'élément / Elément sinon
"""
if self.est_vide() :
return False
if self.queue == None :
val = self.tete
self.tete = None
return val
elif self.queue.queue == None :
val = self.queue.tete
self.queue = None
return val
else :
return self.queue.defile()
def est_vide(self) :
"""
Méthode testant la longueur de la file
return : (bool) True si la file est vide, False sinon
"""
return self.queue == None and self.tete == None
def taille(self):
"""
Méthode retournant la taille de la file
return : (int) taille de la file
"""
if self.queue == None :
return 1
else :
return 1 + self.queue.taille()
def get_file(self):
"""
Méthode retournant la file sous forme de liste pour en avoir un aperçu
return : (list) file sous forme de list
"""
if self.queue != None :
return [self.tete] + self.queue.get_file()
else :
return [self.tete]