python - 尝试添加两个数字,通过从列表中读取它们并打印它们的索引号。从他们的实际名单中
问题描述
给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。,在每个输入中都不会使用相同的元素两次。
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]
解决方案
问题是如果这样的数字,您要求列表为您提供索引:
self.array_num.index(t)
这将始终为您提供第一次出现,此处为 0,尽管循环实际上位于索引为 1 的第二个位置。
为避免这种情况,请反转逻辑:为索引创建循环(使用len()
and range()
),然后获取该位置的数字。
由于这个问题听起来像是家庭作业或学校作业,因此我不会发布完整的解决方案。现在应该可以解决问题了。
更多让老师开心的提示:
[0, 0]
不是导致 6 的唯一解决方案。您还想排除其他无效组合。专业提示:有一个很好的解决方案,不需要任何检查并且运行速度更快。切换逻辑后很容易找到。- 目前,您在对象的构造函数中完成所有工作。也许您想要一种进行实际计算的方法。
- 您的变量名称不是不言自明的。不要使用这么多的单字母变量。
推荐阅读
- java - 将匿名对象作为参数传递时,Java UML 序列顺序是什么?
- laravel - 保存后编辑不保存选择选项
- html - Safari 不支持 Summary 元素的显示属性
- android - Android Kotlin 有条件地调用不同且已弃用的构造函数
- scala - ScalaTest:仅用于选定测试的 setup/tearDown 方法
- python - Matplotlib 对条形图进行错误排序
- java - 需要在 WebDriver 中选中一个复选框
- python - 如何从 Repo 安装 jasmin SMS Gateway the systemd
- javascript - 如何在 Python 中使用 Selenium 来获取 JavaScript 元素?
- c++ - 无法通过测试(Kadane 算法)