J'ai écrit la file d'attente en Python

Bonsoir Continuez à recevoir divers conseils de chacun Deux semaines sont sur le point de passer.

Merci beaucoup. m (_ _) m

Tout d'abord, préparez une pile, modifiez-la et mettez-la dans la file d'attente Je vais adopter une approche.

stack.py


class Stack:
    class full(Exception):
        pass
    def __init__(self,size):
        #Corps de pile
        self.str = []
        #Spécifiez le nombre de données pouvant être empilées
        self.size = size
    def push(self,value):
        #Corps de pile>Traitement des exceptions pour le nombre de données spécifié
        if len(self.str) >= self.size:
            raise Stack.full
        #Poussez s'il n'y a pas de problème
        self.str.append(value)
    def pop(self):
        print(self.str.pop())
    def view(self):
        print(self.str)

x = int(input("stack size is "))
test = Stack(x)  
    
while True:
    num = int(input("1.push 2.pop: "))

    if num == 1:
        x = int(input("push data is "))
        try:#Traitement normal
            test.push(x)
            test.view()
        except:#Gestion des exceptions
            print("Full!")
    elif num == 2:
        try:#Traitement normal
            test.pop()
            test.view()
        except:#Gestion des exceptions
            print("Empty!")
    else:
        break

Non, c'est une description à laquelle je ne pouvais pas penser il y a deux semaines (; ´ ・ ω ・) Maintenant, comment l'amenez-vous dans la file d'attente d'ici? Quelle était la différence entre une pile et une file d'attente en premier lieu? .. Fondamentalement, le mouvement de la pop est différent. 図1.PNG Comme le montre la figure, dans le cas d'une file d'attente, les premières données enregistrées sont retirées. Si vous poussez / pop au hasard, le contenu sera foiré, donc Je ne sais pas où se trouvent les premières données.

En guise de contre-mesure, il y a l'idée de tampon en anneau. La file d'attente est réalisée en gérant où est le premier. .. .. J'utilise python N'est-ce pas facile? ?? ??

Alors, tout d'abord, passons en revue la nature de la pop.

test.py


num = [3,2,1]

for i in range(3):
    print(f"num[{i}] = {num[i]}")

##Résultat d'exécution##
#num[0] = 3#
#num[1] = 2#
#num[2] = 1#
############

Mettons pop dedans. Je veux faire la queue, donc je l'ai réglé sur pop (0) Récupérons les premières données.

test.py


num = [3,2,1]
num.pop(0)
for i in range(2):
    print(f"num[{i}] = {num[i]}")

##Résultat d'exécution##
#num[0] = 2#
#num[1] = 1#
############

[Mur] * ゚) Hmm? Pop le premier numéro [0], c'est-à-dire, retirez-le, Suite à la suppression, les éléments restants sont justifiés à gauche.

C'est vrai, les éléments qui restent après la suppression du début sont Il sera également réorganisé à partir de 0. Et si vous le faites vous-même, vous n'avez pas besoin d'un tampon en anneau!?

La file d'attente est fondamentalement la même que la pile, récupérant des données, Vous n'avez besoin d'écrire qu'une seule fois par adresse. Par conséquent, pop () défini dans la pile ci-dessus, la description doit toujours être extraite de la fin Si vous changez en pop (0), la description qui est toujours retirée du début, ce sera une file d'attente.

Queue??.py


class Stack:
    class full(Exception):
        pass
    def __init__(self,size):
        self.str = []
        self.size = size
    def push(self,value):
        if len(self.str) >= self.size:
            raise Stack.full
        self.str.append(value)
    def pop(self):
        print(self.str.pop(0)) #Changer seulement ici!!Changer avant) pop()Après le changement) pop(0)
    def view(self):
        print(self.str)

x = int(input("stack size is "))
test = Stack(x)  
    
while True:
    num = int(input("1.push 2.pop: "))

    if num == 1:
        x = int(input("push data is "))
        try:
            test.push(x)
            test.view()
        except:
            print("Full!")
    elif num == 2:
        try:
            test.pop()
            test.view()
        except:
            print("Empty!")
    else:
        break

Voici les résultats de l'exécution.

push data is 4 #Pousser 4
[1, 2, 3, 4]   #Contenu de la mémoire après push

1.push 2.pop: 2#2.Sélectionnez pop
1              #str[0]1 stocké en pop
[2, 3, 4]      #Contenu de la mémoire après le pop

1.push 2.pop: 2#2.Sélectionnez pop
2              #str[0]1 stocké en pop
[3, 4]         #Contenu de la mémoire après le pop

1.push 2.pop: 2
3
[4]

1.push 2.pop: 2
4
[]

1.push 2.pop: 2
Empty!

Avec ce genre de sensation, j'ai pu réaliser le signal avec facilité. Hmmm, mais créez un tampon de lien correctement et expliquez Je pense que c'est mieux pour moi de le mettre. Très bien, faisons-le! !! Un jour. ..

Recommended Posts

J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
J'ai écrit python en japonais
J'ai écrit Fizz Buzz en Python
Tri sélect écrit en C
[Python débutant] J'ai rassemblé les articles que j'ai écrits
J'ai écrit l'aile coulissante dans la création.
Traitement des requêtes en Python
J'ai écrit le code pour écrire le code Brainf * ck en python
Un mémo que j'ai écrit un tri rapide en Python
J'ai essayé la méthode des moindres carrés en Python
J'ai écrit "Introduction à la vérification des effets" en Python
J'ai essayé d'implémenter la fonction gamma inverse en python
Je veux afficher la progression en Python!
Trouver des erreurs en Python
Pile et file d'attente en Python
Je comprends Python en japonais!
Ce que j'ai appris en Python
J'ai téléchargé la source python
J'ai essayé d'implémenter la recherche de priorité de largeur avec python (file d'attente, dessin personnalisé)
J'ai essayé de représenter graphiquement les packages installés en Python
Je veux utiliser le jeu de données R avec python
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
J'ai vérifié le package Python pré-installé dans Google Cloud Dataflow
Obtenir l'API arXiv en Python
Je me suis perdu dans le labyrinthe
Python dans le navigateur: la recommandation de Brython
Enregistrez le fichier binaire en Python
Frappez l'API Sesami en Python
J'ai écrit la grammaire de base de Python dans Jupyter Lab
J'ai participé au tour de qualification ISUCON10!
Dans la commande python, python pointe vers python3.8
Implémenter le modèle Singleton en Python
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai écrit un script de création automatique de répertoire vide en Python
J'ai écrit Gray Scale avec Pytorch
Je l'ai écrit en langage Go pour comprendre le principe SOLID
Accédez à l'API Web en Python
J'ai aimé le tweet avec python. ..
Je viens d'écrire le matériel original pour l'exemple de code python
Scikit-learn ne peut pas être installé en Python
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Calculer le mois précédent en Python
Examiner la classe d'un objet avec python
J'ai écrit le fonctionnement de base de Numpy dans Jupyter Lab.
Obtenez le chemin du bureau en Python
Obtenez le nom d'hôte en Python
Accéder à l'API Twitter avec Python
J'ai essayé la notification de ligne en Python
La première étape de Python Matplotlib
J'ai écrit un script qui divise l'image en deux
Maîtriser le module lowref en Python
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
J'ai essayé le mouvement Python3 qui change la direction dans le système de coordonnées
J'ai eu un AttributeError en me moquant de la méthode ouverte en python