我在做这个测试testdome.com网站为了练习,它在一些测试用例中失败了。谁能帮我指出代码中的逻辑错误吗?在
这是我的代码的问题:
“写一个函数,当传递一个列表和一个目标和时,有效地返回任意两个数的两个不同的从零开始的索引,它们的和等于目标和。在
如果没有两个数字,函数应该返回None
。在
例如,find_two_sum([3, 1, 5, 7, 5, 9], 10)
应该返回一个包含以下任何一对索引的元组:
def find_two_sum(numbers, target_sum):
sss=list(dict.fromkeys(numbers))
if (sss == None or len(sss) < 2): return None
for item in sss:
tesn=target_sum-item
if tesn in sss:
if numbers.index(item)==numbers.index(tesn):
continue
else:
return numbers.index(item),numbers.index(tesn)
return None
print(find_two_sum([3, 1, 5, 7, 5, 9], 10))
他们有四个测试用例,我的代码只能通过前两个测试用例。在
示例案例:答错了(返回[0,2],因为索引0的3+索引3的7是10)
有无解的不同数字:错误答案
有或无解的重复数字:错误答案
一大串数字的性能测试:错误答案
我相信您必须添加一个检查两个索引是否不同。 例如:
函数将给出一个
(0, 0)
的答案,这是不正确的,尽管这些是3
的索引,它本身给出了6
的和。在在这里,我添加了对不同索引的检查:
^{pr2}$逻辑中的一个缺陷是
sss
不包含原始列表中可能存在的重复项-您丢失了信息。假设原始列表中没有重复项:list.index(n)
将返回第一项的索引,该索引等于n
,因此可以得到一个具有重复索引的结果我对这个问题的看法:
印刷品:
^{pr2}$相关问题 更多 >
编程相关推荐