簡體   English   中英

為什么我在應用此代碼時收到此錯誤。 我在下面附上了錯誤和代碼?

[英]Why I am getting this error while applying this code. I have enclosed the error and code below?

class Queue:
    def __init__(self,size):
        self.front=self.rear=-1
        self.Q=list()
        self.size=size
    def empty(self):
        return self.front==self.rear
    def full(self):
        return self.rear==self.size-1
    def enqueue(self,item):
        if self.full():
            print("Stack Overflow")
            return
        else:
            self.rear+=1
            self.Q[self.rear]=item
    def dequeue(self):
        if self.empty():
            print("Stack Underflow")
            return 
        else:
            a=-1
            self.front+=1
            a=self.Q[self.front]
            return a

我得到的錯誤

原因很簡單。 您收到IndexError這意味着您正在嘗試讀取/寫入列表中不存在的索引。 解決這個問題的關鍵是在__init__方法中使用None0初始化列表。

建議修復


def __init__(self, size):
    self.front = self.rear=-1
    self.size = size

    self.Q = [None for i in range(self.size)]    # Initializes the list with `None` values

在這里,列表填充了None值的size編號。 這使得使用索引訪問值成為可能。

您收到錯誤,因為列表中沒有元素。

如果列表在索引i處沒有元素,則不能使用 list[i]

如果要添加元素,可以使用list.append(element)

你的功能變成:

def enqueue(self,item):
        if self.full():
            print("Stack Overflow")
            return
        else:
            self.rear+=1
            self.Q.append(item)

如果你能解釋更多關於你為什么使用后前等,我可以幫助你更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM