Afficher des valeurs dans les files.

futura2015 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
_Ritchi_ Messages postés 21333 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans mon livre python pour les nuls j'ai l'exemple de file suivant :


import queue

MyQueue = queue.Queue(3)

print(MyQueue.empty())
input("Appuyez sur une touche quand vous êtes prêt...")

MyQueue.put(1)
MyQueue.put(2)
print(MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

MyQueue.put(3)
print(MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print(MyQueue.get())
print(MyQueue.empty())
print(MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print(MyQueue.get())
print(MyQueue.get())

queue.Queue étant une classe je ne peux pas en afficher les valeurs.

y a t-il un moyen de créer une variable qui m'affichera les valeurs à mesure qu'elles sont ajoutées ou supprimées, avec quel argument puisque queue.Queue est une
classe ? pour l'instant je ne connais que la boucle for qui peut faire ça mais on ne peut pas mettre de boucle for dans les files.

3 réponses

Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
Bonjour,

Vous parlez de quelles valeurs ?
Celles entrées par le clavier ?

Elles sont renvoyées par la fonction « input ».
0
futura2015 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
Oui tout à fait mais je ne sais pas comment les afficher au fur et à mesure qu'elles sont ajoutées ou supprimées. Sachant que je ne peux pas faire de boucle for dans les files.
0
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
Si c'est juste les fonctions input que tu souhaites afficher, alors il te suffit de faire un « print » dessus :
print(input("Appuyez sur une touche quand vous êtes prêt..."))
0
futura2015 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
Non ce sont les valeurs en l’occurrence dans le code ça ferait

1
2
puis on rajoute 3 donc

1
2
3

puis on enlève le 1

2
3
etc...

Bien sur ça marche avec des prints mais si on a un grand nombre de valeurs ça va être fastidieux.
0
_Ritchi_ Messages postés 21333 Date d'inscription   Statut Contributeur Dernière intervention   6 104
 
Bonjour

Tu peux créer une liste que tu gères en parallèle de ta pile FIFO:
import queue

MyQueue = queue.Queue(3)
MyList = []

print("la FIFO est-elle vide? ", MyQueue.empty())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Ajoutons 1 à la FIFO ")
MyQueue.put(1)
MyList.append(1)
print("Ajoutons 2 à la FIFO ")
MyQueue.put(2)
MyList.append(2)
print("La FIFO est-elle pleine? ", MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Listons le contenu de la FIFO:", MyList)

print("Ajoutons 3 à la FIFO")
MyQueue.put(3)
MyList.append(3)

print("La FIFO est-elle pleine? ", MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Dépilons la FIFO: ")
print(MyQueue.get())
print(MyList.pop(0))
print("la FIFO est-elle vide? ", MyQueue.empty())
print("La FIFO est-elle pleine? ", MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Dépilons la FIFO: ")
print(MyQueue.get())
print(MyList.pop(0))
print("Dépilons la FIFO: ")
print(MyQueue.get())
print(MyList.pop(0))


Et pour éviter les oublis de mettre à jour la liste alors que tu as mis à jour la pile FIFO, crée une fonction qui empile et une autre qui dépile:
import queue

MyQueue = queue.Queue(3)
MyList = []


def empile(fifo, liste, valeur):
    fifo.put(valeur)
    liste.append(valeur)

def depile(fifo, liste):
    fifo.get()
    return liste.pop(0)

print("la FIFO est-elle vide? ", MyQueue.empty())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Ajoutons 1 à la FIFO ")
empile(MyQueue, MyList, 1)
print("Ajoutons 2 à la FIFO ")
empile(MyQueue, MyList, 2)

print("La FIFO est-elle pleine? ", MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Listons le contenu de la FIFO:", MyList)

print("Ajoutons 3 à la FIFO")
empile(MyQueue, MyList, 3)

print("La FIFO est-elle pleine? ", MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Dépilons la FIFO: ")
print(depile(MyQueue, MyList))

print("la FIFO est-elle vide? ", MyQueue.empty())
print("La FIFO est-elle pleine? ", MyQueue.full())
input("Appuyez sur une touche quand vous êtes prêt...")

print("Dépilons la FIFO: ")
print(depile(MyQueue, MyList))

print("Dépilons la FIFO: ")
print(depile(MyQueue, MyList))


Ritchi
0