TypeError:__init__()接受2个位置参数,但给定了3个//链表



Node用一个值和对链表中下一个节点的引用进行实例化。节点上的可访问节点的值。可以通过节点上的next访问对列表中下一个节点的引用。

函数insert引用链表中的第一个节点、一个新的和一个位置,并在列表中的给定位置插入一个具有给定值的新节点。

函数popto引用链表中的第一个节点和一个位置,并删除链表中该位置的节点。

函数stringify_linked_list引用链表的第一个节点,并返回链表中所有节点的可打印字符串。

然而,当我尝试通过进行测试时

assert repr(Node(-1, None)) == '<Node (-1)>'

n1 = Node(4, None)
assert n1.value == 4
assert n1.next is None

我得到一个TypeError:init((需要2个位置参数,但有3个是

到目前为止,我的代码如下。如果你对我如何修复它有任何想法,请告诉我。非常感谢。

class Node: 
def __init__(self, value):
self.value = value
self.next = None 
def insert(head, value, position):
new = Node(value) 
if position ==1: 
new.next = head
return new
current_index = 1
current_node = head

while current_index< position-1 and current_node is not None:
current_node = current_node.next
current_index +=1
if current_node is None: 
raise IndexError("Insertion position invalid!")
else: 
new.next = current_node.next 
current_node.next = new 
return head
def pop(head, position):
if position==1: 
return head, head.next 
current_index = 1
current_node = head
while current_index<position-1 and current_node is not None:
current_node = current_node.next
current_index += 1
if current_node is None:
raise IndexError("Pop position invalid!")
else:
current_node.next = current_node.next.next
return current_node.next , head

def stringify_linked_list(head):
ret_string = "" 
pointer = head
counter = 1
while pointer is not None:
ret_string += (str(counter)+":"+str(pointer.value)+"  ") 
pointer = pointer.next
counter+=1
return ret_string

您的__init__采用两个参数:selfvalue

当您在python中创建新对象时,self总是自动传递给构造函数,作为对新创建对象(自身(的引用。因此,您的__init__需要两个参数,但您已经传递了两个,self被添加为第三个。当您调用Node(4, None)时,__init__会被调用为__init__(self, 4, None),但它只需要__init__(self, 4)

要解决这个问题,可以在init中添加第三个参数,也可以在对Node((的调用中删除第二个参数(无论如何都是None?(。

相关内容

  • 没有找到相关文章

最新更新