我收到一个丢失的位置参数错误。(python 中的链表)
I am getting a missing positional argument error.(linked list in python)
代码:
class node:
def __init__(self,data):
self.data=data
self.next=None
class linkedlist:
def __init__(self):
self.head=None
def printlist(self):
temp=self.head
while(temp):
print(temp.data,end=" ")
temp=temp.next
def insert_at_start(self,new_data):
new_node=node(new_data)
if self.head==None:
new_node=self.head
else:
new_node.next=self.head
self.head=new_node
l1=linkedlist()
insert_at_start(1)
insert_at_start(5)
insert_at_start(1)
insert_at_start(7)
insert_at_start(5)
l1.printlist()
错误:
追溯(最近一次通话):
文件 "linkedlist.py",第 65 行,位于
insert_at_start(1)
类型错误:insert_at_start() 缺少 1 个必需的位置参数:'new_data'
你有一个缩进问题:insert_at_start
不是 linkedlist
class 的方法,因为它是在 class 范围之外定义的,这就是为什么它需要 2参数。
试试这个:
class linkedlist:
def __init__(self):
self.head=None
def printlist(self):
temp=self.head
while(temp):
print(temp.data,end=" ")
temp=temp.next
def insert_at_start(self,new_data):
new_node=node(new_data)
if self.head==None:
new_node=self.head
else:
new_node.next=self.head
self.head=new_node
l1=linkedlist()
l1.insert_at_start(1)
l1.insert_at_start(5)
l1.insert_at_start(1)
l1.insert_at_start(7)
l1.insert_at_start(5)
l1.printlist()
首先你有缩进问题,这两个函数(printlist
和 insert_at_start
)应该是方法,所以将它们缩进到 linkedlist
class 中。还有两个错误:一个是,你需要调用
l1.insert_at_start(..)
即实例上的方法调用。另一个是存在于以下行中的逻辑错误:
if self.head == None:
new_node = self.head
当.head
还不存在的时候,你不觉得.head
应该分配给new_node
吗?
另请注意,l1
可能是有史以来最容易混淆的变量名之一,请更改它;和 PascalCase 你的 class 个名字。
代码:
class node:
def __init__(self,data):
self.data=data
self.next=None
class linkedlist:
def __init__(self):
self.head=None
def printlist(self):
temp=self.head
while(temp):
print(temp.data,end=" ")
temp=temp.next
def insert_at_start(self,new_data):
new_node=node(new_data)
if self.head==None:
new_node=self.head
else:
new_node.next=self.head
self.head=new_node
l1=linkedlist()
insert_at_start(1)
insert_at_start(5)
insert_at_start(1)
insert_at_start(7)
insert_at_start(5)
l1.printlist()
错误: 追溯(最近一次通话): 文件 "linkedlist.py",第 65 行,位于 insert_at_start(1) 类型错误:insert_at_start() 缺少 1 个必需的位置参数:'new_data'
你有一个缩进问题:insert_at_start
不是 linkedlist
class 的方法,因为它是在 class 范围之外定义的,这就是为什么它需要 2参数。
试试这个:
class linkedlist:
def __init__(self):
self.head=None
def printlist(self):
temp=self.head
while(temp):
print(temp.data,end=" ")
temp=temp.next
def insert_at_start(self,new_data):
new_node=node(new_data)
if self.head==None:
new_node=self.head
else:
new_node.next=self.head
self.head=new_node
l1=linkedlist()
l1.insert_at_start(1)
l1.insert_at_start(5)
l1.insert_at_start(1)
l1.insert_at_start(7)
l1.insert_at_start(5)
l1.printlist()
首先你有缩进问题,这两个函数(printlist
和 insert_at_start
)应该是方法,所以将它们缩进到 linkedlist
class 中。还有两个错误:一个是,你需要调用
l1.insert_at_start(..)
即实例上的方法调用。另一个是存在于以下行中的逻辑错误:
if self.head == None:
new_node = self.head
当.head
还不存在的时候,你不觉得.head
应该分配给new_node
吗?
另请注意,l1
可能是有史以来最容易混淆的变量名之一,请更改它;和 PascalCase 你的 class 个名字。