队列实现显示函数错误


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()方法显示其中的项目?

认为你应该打印self.items(而不是items(

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

这将使用标准格式输出列表,不是很漂亮,所以你可能想要添加一些额外的逻辑来打印漂亮。

如果要限制队列大小,可以通过忽略超过特定限制的项目来实现此目的。为此,您需要实现一个限制,以及用于检查限制的逻辑。例如:

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)
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。此外,您可以检查队列的大小是否已满

最新更新