函数insert接受对链表中第一个节点的引用、新值和位置,并在列表中的给定位置插入具有给定值的新节点。
函数pop to引用链表中的第一个节点和一个位置,并删除链表中该位置的节点。
函数stringify_linked_list引用链表的第一个节点并返回链表中所有节点的可打印字符串。
assert repr(Node(-1, None)) == '<Node (-1)>'
n1 = Node(4, None)
assert n1.value == 4
assert n1.next is None
到目前为止,我的代码如下。如果你对我如何修复它有任何想法,请让我知道。谢谢!
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__
接受两个参数:self
和value
。
在python中创建新对象时,self总是作为对新创建对象(本身)的引用自动传递给构造函数。因此,__init__
需要两个参数,但您已经传递了两个参数,并且self被添加为第三个参数。当调用节点(4,None)
时,__init__
将作为__init__(self,4,None)
调用,但它只需要__init__(self,4)
。
要解决这个问题,要么在init中添加第三个参数,要么在对Node()的调用中删除第二个参数(无论如何都不是?)。
在我的程序中,我主要想返回一个方法的结果,该方法测试两个学生之间的相等性(即,如果两个学生上的课的数量相等) 我创建了一个名为Student的类。然后我创建了两个函数并定义了它们的属性。实际上,我试图比较student类中的两个对象,而一个方法需要检查这两个对象之间的相等性。
Tkinter回调跟踪中的异常(最近的调用是最后一次): 文件“C:...\programs\python\python37\lib\tkinter__init__.py”,第1705行,在调用返回self.func(*args)typeError:done()接受1个位置参数,但给出了2个 有谁知道我犯了什么错误,能给我一个例子,如何使它更好和改进吗?
...为什么Python告诉我我给了它两个参数,而我只给了一个?
问题内容: 如果我有课… 我这样称呼 …为什么当我只给出一个参数时,Python告诉我给它两个参数? 问题答案: 在Python中,这是: …是语法糖,口译员在后台将其翻译为: …,如你所见,它确实有两个参数-从调用者的角度来看,只是第一个参数是隐式的。 这是因为大多数方法会对被调用的对象进行某些处理,因此需要某种方法在该方法内部引用该对象。按照惯例,第一个参数self在方法定义内调用: 如果你呼
我正在运行一个celery任务,它需要两个参数,如下所示: 和: