【问题标题】:Need help finding an indentation/syntax error in my list code需要帮助在我的列表代码中查找缩进/语法错误
【发布时间】:2020-05-16 02:30:26
【问题描述】:

好的,所以我正在通过 doctest 检查我的所有代码。我还有大约五个其他工作正常的解决方案 - 所以我的代码的肉和土豆是功能性的。但是,我不断通过一项测试,并得到 False 而不是 True。下面是我的代码

def duplist(lst1, lst2):
    lst1Counter = 0
    lst2Counter = 0
    while lst1Counter in range(len(lst1)) and lst2Counter in range(len(lst2)):
        if lst1[0] == lst2[0]:
            lst1Counter+=1
            lst2Counter+=1
        else:
            lst2Counter+=1

    if lst1Counter not in range(len(lst1)):
        return True
    else:
        return False

列表的重点是看第一个列表是否是第二个列表的子列表。一切都准备好了,除了一个测试。

duplist([15,1,100],[20,15,30,50,1,100])==True

我总是返回 False。这一定是一个小的语法/缩进错误 - 但我无法在任何地方找到它。有人能指出我正确的方向吗?

【问题讨论】:

  • 您只比较两个列表的第一个元素。
  • 您有什么建议吗?它适用于所有其他测试。逻辑是它检查两个列表的第一个索引。如果它们不匹配,则将 1 增加到第二个列表。如果它们都匹配,则将每个加 1 并继续。我认为这是一个需要做出的非常小的改变
  • 递增计数器...然后再次比较 first 元素。
  • “它适用于所有其他测试”意味着很少。为这类事情提供的测试用例经常很糟糕。
  • 你认为这些零是什么意思?

标签: python syntax indentation


【解决方案1】:

可视化您的代码正在做什么可能会为您指明正确的方向。 让我们回顾一下代码:

对于duplist([15, 1, 100], [20, 15, 30, 50, 1, 100]),在while循环完成后,你会得到:

lst1Counter = 0
lst2Counter = 3  # for 3 iterations where lst1[0] != lst2[0] in the above case

那你看lst1Counter not in range(len(lst1))是不是:

if 0 not in [0, 1, 2]

这是一个错误的陈述,因为 0 在 [0, 1, 2] 中。 因此,它返回 False 而不是 True。

另外,如果您在代码方面需要一些帮助,请告诉我们,这实际上并不是检查 lst1 是否是 lst2 的子列表。

希望这有帮助!

【讨论】:

  • 谢谢你 - 我刚刚明白了。一行代码就改变了。如果 lst1[lst1Counter] == lst2[lst2Counter]: 是我需要的。不知道为什么会这样,在黑暗中有点短。如果你能解释一下,也许?这将是巨大的
  • 当然,但是只有当 array2 的元素与 array1 具有相同的顺序时(如您提到的),更改此设置才有效。再次尝试将其可视化:(仍在写,请稍等)
  • 设 lst1Counter, lst2Counter 简写为 lC1, IC2 = 0, 0 。 --- 第一次迭代后,lst1[0] = 15 != 20 = lst2[0],--- 所以现在进行第二次迭代,lC1 = 0,lC2 = 1,因此 lst1[0] = 15 == 15 = lst2[1], ----对于第 3 次迭代 lC1 = 1, lC2 = 2, 因此这里 lst1[1] = 1 != 30 = lst2[2], --- 对于第 4 次迭代, lC1 = 1, lC2 = 3,因此这里 lst[1] = 1 != 50 = lst[3],---对于第 5 次迭代,lC1 = 1,lC2 = 4,因此这里 lst1[1] = 1 == 1 = lst2[ 4]等等......
  • 另外,不幸的是代码的格式并没有很好地结束。这是因为在 cmets 中构建它要困难得多。希望这有帮助!编码愉快!
猜你喜欢
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多