Python似乎忽略了这个类中的if语句。这是怎么回事?

时间:2017-06-12 18:39:42

标签: python debugging if-statement

所以我正在编写一个链表类,其中一个必需的函数是插入某个位置。这很简单,我已经为它编写了代码,但我还整理了一个错误设置,以防止某人试图在不存在的索引处添加元素:

def insert_element_at(self, data, position):
    position=position-1 #gets around the difference between indexing and the way we count things
    if position >= self.size:
        print("Error: Index larger than current list size")
        return 
    newnode=self.Node(data)
    current=self.header 
    for i in range (0, position): 
        current=current.nextnode 
    newnode.nextnode=current.nextnode
    current.nextnode=newnode
    self.size=self.size+1

我觉得应该工作,但每当我尝试插入一个大于列表大小的元素时,代码会尝试一直工作到列表的末尾(或者过去它 - 它试图将数据粘贴到不存在的节点中。我收到此错误:'NoneType'对象没有属性'nextnode'。

这是有道理的,但它不应该走得那么远。我怎样才能解决这个问题?

以下是完整代码,适用于上下文:https://pastebin.com/wgTLWWsx

1 个答案:

答案 0 :(得分:0)

问题可能是位置从0开始,大小从1开始,所以位置是4,大小是5