<jupyter_start><jupyter_text>Implémentation de la pile en PythonOn peut voir dans la documentation officielle de python qu'il est facile d'implémenter une structure de pile avec les listes : https://docs.python.org/fr/3/tutorial/datastructures.htmlusing-lists-as-stacks  Implémentation directeExécutez le code suivant et modifiez le pour bien comprendre les mécanismes de pile :<jupyter_code>pile=[1,2,3]
print("pile de départ : ",pile)
pile.append(4)
print("après ajout de 4 : ",pile)
pile.pop()
pile.pop()
print("après suppression de deux éléments : ",pile)
pile.pop()
pile.pop()
print(pile)<jupyter_output>pile de départ :  [1, 2, 3]
après ajout de 4 :  [1, 2, 3, 4]
après suppression de deux éléments :  [1, 2]
[]<jupyter_text>Observez ce qui se passe quand on retire un élément d'une liste vide.Regardez s'il est possible d'empiler des données de différents types sur la pile (chaines, dictionnaires, tuples...)  Implémentation de files en PythonEn lisant le cours sur la structure de donnée liste (voir https://pixees.fr/informatiquelycee/n_site/nsi_term_structDo_liste.html), vous avez compris que la structure de donnée file (queue en anglais) est de type "premier arrivé premier sorti" (first in first out FIFO en anglais). Il ne faut pas la confondre avec les listes python (list en anglais)On rappelle aussi que les fonctions suivantes y sont implémentées :* on peut savoir si une file est vide (file_vide?)* on peut ajouter un nouvel élément à la file (ajout)* on peut récupérer l'élément situé en bout de file tout en le supprimant (retire)* on peut accéder à l'élément situé en bout de file sans le supprimer de la file (premier)* on peut connaitre le nombre d'éléments présents dans la file (taille) Votre travailComplétez le code suivant pour implémenter une file en Python avec ses différentes caractéristiques.Observez bien les commentaires qui vous guideront dans ce qu'on attend de vous<jupyter_code>################################
# Fonctions à implémenter
################################
def file_vide(file):
#renvoie un booleen indiquant si la file est vide
    return True #à modifier bien sûr

def ajout(file, element):
#renvoie une file à laquelle on a ajouté element à la fin
    return file #à modifier bien sûr

def retire(file):
#renvoie un tuple (elementSorti,fileTronquee) 
# elementsorti est l'élément qui est sorti de la file
# fileTronquee est la nouvelle file sans cet element
    return (1,file) #à modifier bien sûr

def premier(file):
#renvoie element qui est le premier élément de la file
    return 1 #à modifier bien sûr

def taille(file):
#renvoie taille qui est la longueur de la file
    return 100 #à modifier bien sûr







################################
# Partie principale de test
# aucun changement à apporter
################################
mafile=[1,2,3,4]
print(file_vide(mafile))  #renvoie faux car la file n'est pas vide
mafile=ajout(mafile, 5)  
print(mafile) #renvoie [1,2,3,4,5]
first,mafile = retire(mafile)
print(first,mafile)  #renvoie 1 [2,3,4,5]
first = premier((mafile))
print(first,mafile) #renvoie 2 [2,3,4,5]
print(taille(mafile)) #renvoie 4
###################################
# vous pouvez ajouter vos propres tests ici
####################################<jupyter_output>True
[1, 2, 3, 4]
1 [1, 2, 3, 4]
1 [1, 2, 3, 4]
100
{'fraction_non_alphanumeric': 0.13674954517889631, 'fraction_numerical': 0.017889630078835657, 'mean_word_length': 5.344230769230769, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '262762', 'license': 'MIT', 'n_tokens_mistral': 1146, 'n_tokens_neox': 1089, 'n_words': 429, 'path': 'ArithmeticoGeom.ipynb', 'repo_name': 'egouello/TermNSI', 'size': '3298'}