首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个和LeetCode问题错误:'AttributeError:'list‘对象没有属性'twoSum'’

两个和LeetCode问题错误:'AttributeError:'list‘对象没有属性'twoSum'’
EN

Stack Overflow用户
提问于 2022-03-12 00:36:26
回答 2查看 266关注 0票数 -1

我有以下代码:

代码语言:javascript
运行
复制
class Solution:
    def __init__(self, nums, target):
        self.nums = nums
        self.target = target
        

    def twoSum(self):
        for i in range(len(self.nums)):
            for j in range(i + 1, len(self.nums)):
                if nums[j] == self.target - self.nums[i]:
                    return [i, j]

num1 =  [[2,7,11,15],9]
num1.twoSum()
print(num1)

为什么这段代码会产生以下错误?

代码语言:javascript
运行
复制
AttributeError: 'list' object has no attribute 'twoSum'
EN

回答 2

Stack Overflow用户

发布于 2022-03-12 01:30:43

所给出的代码就是其中之一,这取决于您是选择Python 2还是Python 3:

代码语言:javascript
运行
复制
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
代码语言:javascript
运行
复制
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:

您应该实现twoSum方法,而不是添加__init__方法并更改twoSum方法的签名。

正确实现之后,如果您想在本地测试它,请如下所示:

代码语言:javascript
运行
复制
print(Solution().twoSum([2,7,11,15], 9))
票数 1
EN

Stack Overflow用户

发布于 2022-03-12 00:41:44

您的代码有两个问题:

您需要构造一个twoSum().

  • The对象而不是嵌套列表,以便在twoSum函数中调用if语句,应该使用self.nums而不是nums,引用您在constructor.中设置的属性

下面是修复这两个问题的代码片段:

代码语言:javascript
运行
复制
class Solution:
    def __init__(self, nums, target):
        self.nums = nums
        self.target = target
        

    def twoSum(self):
        for i in range(len(self.nums)):
            for j in range(i + 1, len(self.nums)):
                if self.nums[j] == self.target - self.nums[i]:
                    return [i, j]

sol = Solution([2,7,11,15], 9)
print(sol.twoSum()) # Prints [0, 1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71446030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档