【问题标题】:The false value is not returned from the function函数不返回 false 值
【发布时间】:2021-02-23 12:48:11
【问题描述】:

如果这个问题很愚蠢,我深表歉意,但如果当前项目等于下一个项目,我会尝试返回 True,否则返回 False

def isSame(array):
    for index, number in enumerate(array):
        if number == array[index + 1]:
            return True
    return False

print(isSame([1, 3, 2, 6, 5, 3, 2]))

如果我这样调用函数,则返回 True 值:isSame([1, 3, 2, 6, 5, 3, 3])

但是当我这样调用它时:isSame([1, 3, 2, 6, 5, 3, 2]) 该函数不返回任何值。

【问题讨论】:

  • 试试if number == array[index - 1]:
  • @PythonEnthusiast 非常感谢你,你能解释一下为什么index - 1 而不是index + 1
  • 这是因为您当前的程序会根据下一个值检查最后一个值,而不是前一个值。如果您使用index + 1,它将显示错误,因为数组中的最后一个值没有任何要检查的内容。这就是您收到错误 list index out of range 的原因。

标签: python python-3.x function


【解决方案1】:

Zips 在这种情况下可能很有用,这基本上是获取从 1 开始的所有值的列表,然后是从 0 开始的所有值的列表,将它们组合成一个变量,然后遍历这些对的列表并检查是否它们相等,如果相等则返回 true,否则返回 false,因为这是一个 listcomp,所以它将它作为一个列表返回。 z=lambda g:[x[0]==x[1] for x in zip(g[0:],g[1:])]

【讨论】:

    【解决方案2】:

    它没有返回false,因为脚本被错误IndexError: list index out of range停止,添加检查if index + 1 > len(array) - 1:

    def isSame(array):
        for index, number in enumerate(array):
            if index + 1 > len(array) - 1:
                print("IndexError: list index out of range")
                continue
            if number == array[index + 1]:
                return True
        return False
    
    
    print(isSame([1, 3, 2, 6, 5, 3, 2]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多