【问题标题】:Python function output error, Checking an index to see value?Python函数输出错误,检查索引以查看值?
【发布时间】:2017-03-23 23:43:04
【问题描述】:

我正在构建一个函数,它接受一个 puzzle= 2d 列表并检查以确保每个位置都有一个值。如果里面没有,那么它需要返回false。它应该很基本,但我的函数一直返回 True,我不明白为什么。

示例输入/预期输出:

is_complete([[1,2,3],[3,1,2],[2,3,1]]) → 真

is_complete([[None,None],[None,None]]) → False

我的代码如下:

def is_complete(puzzle):
    for row in puzzle:
        for val in row:
            if val == None:
                return False
            else:
                return True

【问题讨论】:

    标签: list function python-3.x indexing


    【解决方案1】:

    您的函数将在任一 return 语句之后立即停止。这就是为什么如果传递的唯一值是“[[None]]”,它将返回 False。解决这个问题的方法是在所有值都被迭代之后移动你的“return True”。

    def is_complete(puzzle):
        for row in puzzle:
            for val in row:
                if val == None:
                    return False
        return True
    

    【讨论】:

    • @ocean.1234 我不太清楚你的意思。你的循环都很好。事实上,您在检查通过的第一个列表的第一个索引后返回一个值。
    • 是的,如果您要检查的特定内容不符合要求,则应在遇到不需要的元素时返回,然后在一切完成后返回True only检查。因为只要您返回True,它就会在循环完成之前退出该方法。
    【解决方案2】:

    似乎适用于您的测试输入,甚至适用于Rolo787 提到的“[[None]]”的解决方案如下。而不是使用 2 个 for 循环,只需检查 None 是否在行中。

    def is_complete(puzzle):
        for row in puzzle:
            if None in row:
                return False
        return True
    

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多