class Pile():
    def __init__(self, tableau=None):
        if tableau is None:
            self.pile = []
        else:
            self.pile = tableau.copy()
    
    def est_vide(self):
        return self.pile == []
        
    def empiler(self, element):
        self.pile.append(element)
    
    def depiler(self):
        if self.est_vide():
            raise Exception("Impossible de dépiler sur une pile vide")
        return self.pile.pop()
    
    def __repr__(self):
        return str(self.pile)

    def __str__(self):
        if len(self.pile) == 0:
            return "Pile vide"
        if len(self.pile) == 1:
            return "Unique élément : " + str(self.pile[0])
        else:
            chaine = "Haut\n"
            for i in range(len(self.pile)-1,-1,-1):
                if i != 0:
                    chaine += "|  "
                else:
                    chaine += "V  "
                chaine += str(self.pile[i]) + "\n"
            chaine += "Bas\n"
            return chaine
    
    def sommet(self):
        return self.pile[-1]