你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
解析:
这个列表里面两个数字相加等于这个预期的数字的下标。
代码思路:
4. 这里可能返回多个,我们默认选择第一组。
实现代码:
class Solution(): def twoSun(self,nums,target): for i in range(len(nums)): for j in range(len(nums)): if nums[i]+nums[j] ==target and i !=j: return [i,j]
那么我们先来个简单的测试,去测试一下:
if __name__=="__main__": solution=Solution() print(solution.twoSun([1,2,3,4,5,6],5))
执行打印结果:

那么我来看下给定的list里面是否是对的。
我们知道python的list是从0开始计数的,即0的下标的元素就是list的里面第一个元素,然后一次类推。
我们可以看到下标是0 和3的元素分别是1和4,1+4=5
符合预期,认为代码通过。
下面我们做下单元测试:
class TestCase(unittest.TestCase): def setup(self): pass def tearDown(self) -> None: pass def testcaseone(self): self.solution = Solution() result=self.solution.twoSun([1, 2, 3, 4, 5, 6], 5) self.assertEqual(result,[0,3]) def testcasetow(self): self.solution = Solution() result = self.solution.twoSun(["1", 2, 3, 4, "5", 6], "5") self.assertEqual(result, [0, 3]) def testcasethree(self): self.solution = Solution() result = self.solution.twoSun(["a", 2, 3, 4, "b", 6], "ab") self.assertEqual(result, False)if __name__=="__main__":
unittest.main()

测试代码运行后,我们发现了其中的错误。其实我们没有对入参进行控制,随后我们对代码进行升级,
class Solution(): def twoSun(self,nums:list,target:int): for i in range(len(nums)): for j in range(len(nums)-i): try: if nums[i]+nums[j] ==target and i !=j: return [i,j] except: return False
运行结果

所以在测试过程中,我们一定要对我们的代码进行一定的单元测试。单元测试进行的越早,我们的问题发现的越早。写好的代码自己一定要进行测试。
来源:博客园
作者:北漂的雷子
链接:https://www.cnblogs.com/leiziv5/p/11750540.html