首页 > 解决方案 > 尝试添加两个数字,通过从列表中读取它们并打印它们的索引号。从他们的实际名单中

问题描述

给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。,在每个输入中都不会使用相同的元素两次。

class solution():
    def __init__(self,array_num,target_num):
        self.array_num=array_num
        self.target_num=target_num
    
        for  t in self.array_num:
            for  b in self.array_num:
                e=t+b
                w=self.array_num.index(t),self.array_num.index(b)
                y=list(w)
                if e==self.target_num:
                    
                    if y==[0,0]:
                        break
                    else:
                        print(y)

p=[3,3]
so=solution(p,6)

输出

[] or nothing

预期产出

[0,1]

标签: pythonpython-3.x

解决方案


问题是如果这样的数字,您要求列表为您提供索引:

self.array_num.index(t)

这将始终为您提供第一次出现,此处为 0,尽管循环实际上位于索引为 1 的第二个位置。

为避免这种情况,请反转逻辑:为索引创建循环(使用len()and range()),然后获取该位置的数字。

由于这个问题听起来像是家庭作业或学校作业,因此我不会发布完整的解决方案。现在应该可以解决问题了。

更多让老师开心的提示:

  • [0, 0]不是导致 6 的唯一解决方案。您还想排除其他无效组合。专业提示:有一个很好的解决方案,不需要任何检查并且运行速度更快。切换逻辑后很容易找到。
  • 目前,您在对象的构造函数中完成所有工作。也许您想要一种进行实际计算的方法。
  • 您的变量名称不是不言自明的。不要使用这么多的单字母变量。

推荐阅读