我是编码方面的初学者,能帮我理解错误吗
我仍然给参数错误,提示需要1个位置参数
输入(l1和l2是链表)
l1=[2,4,3]
l2=[5,4,6]
码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def inttolist(self, i) -> ListNode:
while(i%10!=0):
self = ListNode(i%10, inttolist(int(i/10)))
return self
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
a,b,c,d=l1,l2,1,0
while(a!=None):
d=d+(a.val+b.val)*c
a,b=a.next,b.next
c=c*10
print(d)
self = Solution.inttolist(int(d))
return self
错误代码
TypeError: inttolist() missing 1 required positional argument: 'i'
self = Solution.inttolist(int(d))
Line 18 in addTwoNumbers (Solution.py)
ret = Solution().addTwoNumbers(param_1, param_2)
Line 45 in _driver (Solution.py)
_driver()
Line 56 in <module> (Solution.py)
问题是self
变量的滥用。所述self
参数是一个包含实例化的变量Solution
类。这有两个问题:
Solution.inttolist(int(d))
,应使用:self.inttolist(int(d))
。self
值赋值,而是为其创建一个新变量,因此我们必须更改此值:self = ListNode(i%10, inttolist(int(i/10)))
。下面,我添加了一个有效的解决方案,以防您在应用以上更改后仍然遇到问题。
输入要求一个ListNode,因此我使用以下命令将输入列表转换为其规范:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def generate_link_list(l1: list):
nodes = []
for val in l1:
def generate_link_list(l1: list):
nodes = []
for val in l1:
nodes.append(ListNode(val))
for index, node in enumerate(nodes[:-1]):
node.next = nodes[index + 1]
return nodes[0]
l1 = generate_link_list(l1)
l2 = generate_link_list(l2)
通过以上更改,代码将变为:
class Solution:
def inttolist(self, i) -> ListNode:
ans = 0 # <--- the new variable, instead of `self`
while (i % 10 != 0):
ans = ListNode(i % 10, self.inttolist(int(i / 10)))
return ans
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
a, b, c, d = l1, l2, 1, 0
while (a != None):
d = d + (a.val + b.val) * c
a, b = a.next, b.next
c = c * 10
print(d)
ans = self.inttolist(int(d))
return ans
运行:
print(Solution().addTwoNumbers(l1, l2))
987
当您反转它们的值并将其连接时,将得出答案:,这是两个列表的总和。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句