| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
nums = [2, 7, 11, 15] 
target = 9 
 
n = len(nums) 
for i in range(n): 
    for j in range(i+1, n): 
        if nums[i] + nums[j] == target: 
            print([i, j]) 
我记得len是查元素个数的啊,按我的意思n只是=4罢了,但是这是小甲鱼的课后作业答案,我没搞懂,请大神指点
 本帖最后由 jackz007 于 2021-1-18 01:16 编辑 
        n = len(nums)  = 4 控制循环次数,索引列表元素
 
         这一句将使循环运行 4 次,i 的值将依次为 0、1、2、3。恰好可以索引到 nums 中的每个元素,你说它的作用重不重要?
 - nums = [2, 7, 11, 15]
 
 - target = 9
 
  
- n = len(nums)                            # n = 4,列表 nums 中的元素数量
 
 - for i in range(n):                       # 从索引 0 开始,通过索引 i 向后遍历列表 nums 中的各个元素
 
 -     for j in range(i + 1 , n):           # 从索引 i + 1 开始,通过索引 j 向后遍历列表 nums 中的各个元素,这样,i 与 j 永远不会相等。
 
 -         if nums[i] + nums[j] == target:  # 如果当前枚举到的 nums 两个元素之和与目标数相等
 
 -             print([i, j])                # 那就把它们打印出来
 
  复制代码
        这个代码存在缺陷,当 i = n - 1 = len(nums) - 1 的时候,j = i + 1 = len(nums) , 这时,nums[j] 会下标越界的。 
        必须把这一句改掉
 
        改为
  
 
 
 |   
 
 
 
 |