【问题标题】:"How to fix 'function call problem' in this question"“如何解决这个问题中的‘函数调用问题’”
【发布时间】:2019-03-24 05:50:42
【问题描述】:

文件“/home/shubham/PycharmProjects/LeetCode/AddTwoLinkedList.py”,第 5 行,类解决方案:文件“/home/shubham/PycharmProjects/LeetCode/AddTwoLinkedList.py”,第 35 行,解决方案 addTwoNumber(l1 , l2) TypeError: addTwoNumber() 缺少 1 个必需的位置参数:'l2'

class ListNode:
    def __init__(self,x):
        self.val=x
        self.next=None
class Solution:
    def addTwoNumber(self,l1,l2):
        head=l3=ListNode(0)
        carry=0

        while l1 or l2 or carry:
            if l1:
                carry+=l1.val
                l1=l1.next
                if l2:
                    carry+=l2.val
                l2=l2.next

                l3.val=carry%10
                carry=carry//10

                if l1 or l2 or carry:
                    l3.next=ListNode(0)
                l3=l3.next
        print(head)
        return head

    l1 = ListNode(2)
    l1 = ListNode(4)
    l1 = ListNode(3)
    l2 = ListNode(5)
    l2 = ListNode(6)
    l2 = ListNode(4)
    addTwoNumber(l1, l2)

【问题讨论】:

  • 文件 "/home/shubham/PycharmProjects/LeetCode/AddTwoLinkedList.py",第 5 行,在 类解决方案:文件 "/home/shubham/PycharmProjects/LeetCode/AddTwoLinkedList.py",第 35 行,在解决方案中 addTwoNumber(l1, l2) TypeError: addTwoNumber() missing 1 required positional argument: 'l2'

标签: python


【解决方案1】:

我发现您的代码存在一些问题。

首先,Python 是基于空格的语言。

因此,您的代码块

l1 = ListNode(2)
l1 = ListNode(4)
l1 = ListNode(3)
l2 = ListNode(5)
l2 = ListNode(6)
l2 = ListNode(4)
addTwoNumber(l1, l2)

实际上在您的 Solution 类的主体中。

这需要拉到文件的全局范围内。为了使这篇文章更短,我删除了你的代码主体。

class Solution:
    # put your code in here

s = Solution()
l1 = ListNode(2)
l2 = ListNode(6)
answer = s.addTwoNumber(l1, l2)

注意,我也是如何创建Solution 的实例的。我们需要这样做,因为addTwoNumberSolution 的实例方法

然后你用python your_filename.py运行那个文件

您将获得TypeError: addTwoNumber() missing 1 required positional argument: 'l2',因为当您调用实例方法时,Python 会自动提供self 变量,该变量引用对象的实例。

但是,您不允许 Python 提供 self,因为它当前被调用,就像它是一个静态方法一样,所以它从左到右填充参数。这意味着,它分别使用 l1l2 传递“self”和“l1”,但您的函数需要 3 个参数。

【讨论】:

  • 亲爱的,正如你所说,我完成了。但我没有得到输出,也没有显示任何错误
  • 这段代码已经在 LeetCode 上运行,但是现在我想在 IDE 中以正确的方式打印它,如果可以的话,你能帮帮我吗???
【解决方案2】:

函数addTwoNumber 是一个成员函数,因此它需要self 的值作为addTwoNumber(selfValue, l1, l2)selfValue.addTwoNumber(l1, l2) 传递。

只需将selfValue 替换为您想要作为self 参数传递的任何值。

【讨论】:

    猜你喜欢
    • 2021-02-24
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多