Ошибка функции отображения реализации очереди - PullRequest
1 голос
/ 29 апреля 2019
class Queue:
    def __init__(self):   '''initialization of function'''
        self.items = []
    def is_empty(self):   '''Checking if queue is empty or not'''
        return self.items == []
    def enqueue(self, data): '''Adding value '''
        self.items.append(data)
    def dequeue(self):     ''' Removing value'''
        return self.items.pop(0)
    def dis(self):  '''Printing the stored item in queue'''
        print(items)

После этой инициализации Queue:

 q = Queue()
 while True:
     print('enqueue <value>')
     print('dequeue')
     print('dis')
     print('quit')
     do = input('What would you like to do? ').split()
     operation = do[0].strip().lower()
     if operation == 'enqueue':
         q.enqueue(int(do[1]))
     elif operation == 'dequeue':
         if q.is_empty():
             print('Queue is empty.')
         else:
             print('Dequeued value: ', q.dequeue())
     elif operation == 'dis':
         q.dis()
     elif operation == 'quit':
         break
     else:
         print("Enter the correct operation")

Я не могу отобразить элементы, поставленные в очередь в Queue. Как я могу использовать dis() метод для отображения элементов в нем?

Ответы [ 2 ]

4 голосов
/ 29 апреля 2019

Думаю, вы должны напечатать self.items (вместо элементов)

def dis(self):  '''Printing the stored item in queue'''
    print(self.items)

Это выведет список с использованием стандартного форматирования, не очень красивого, так что вы, вероятно, захотите добавить дополнительную логику для довольно-printing.

Если вы хотите ограничить размер очереди, вы можете сделать это, просто игнорируя элементы, превышающие определенный лимит.Для этого вам нужно реализовать лимит, а также логику для проверки лимита.Например:

class Queue:
    def __init__(self, size=8):   '''initialization of function'''
        self.items = []
        self.size = size
    def is_empty(self):   '''Checking if queue is empty or not'''
        return self.items == []
    def enqueue(self, data): '''Adding value '''
        if len(self.items) < self.size:
            self.items.append(data)
        else:
            pass # behavior when queue is already full
    def dequeue(self):     ''' Removing value'''
        return self.items.pop(0)
    def dis(self):  '''Printing the stored item in queue'''
        print(items)
1 голос
/ 29 апреля 2019
class Queue:
    items=[]
    size=5
    def __init__(self):
        self.items = []

    def is_empty(self):
        return self.items == []
    def enqueue(self, data):
        self.items.append(data)

    def dequeue(self):
        return self.items.pop(0)
    def dis(self):
        print(self.items)
    def is_full(self):
        if (len(self.zitems)>5):
            print("Queue is full")
        else:
            print("Not full")

Инициализировать items = [] и в метод dis добавить self.items. Также вы можете проверить, заполнен ли размер очереди или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...