我有以下代码:
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)为什么这段代码会产生以下错误?
AttributeError: 'list' object has no attribute 'twoSum'发布于 2022-03-12 01:30:43
所给出的代码就是其中之一,这取决于您是选择Python 2还是Python 3:
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:您应该实现twoSum方法,而不是添加__init__方法并更改twoSum方法的签名。
正确实现之后,如果您想在本地测试它,请如下所示:
print(Solution().twoSum([2,7,11,15], 9))发布于 2022-03-12 00:41:44
您的代码有两个问题:
您需要构造一个twoSum().
twoSum函数中调用if语句,应该使用self.nums而不是nums,引用您在constructor.中设置的属性下面是修复这两个问题的代码片段:
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]https://stackoverflow.com/questions/71446030
复制相似问题