【问题标题】:Are booleans overwritten in python?布尔值是否在python中被覆盖?
【发布时间】:2017-02-02 07:40:59
【问题描述】:
def space_check(board, position):  
    return board[position] == ' '    

def full_board_check(board):
    for i in range(1,10):
        if space_check(board, i):
            return False
    return True

最后一行是 return True 为什么不else: return True 如果if语句返回false,最后的return True不会覆盖吗??

【问题讨论】:

  • 因为只能返回一次。
  • 你的意思是如果它返回 False 最后一行将不起作用?
  • 该函数在任何匹配的循环中返回 True,结束该函数。如果没有,如果 space_check... 为 True,则在循环外点击 return False。您可以使用else: return True,但您不必这样做,因为如果 space_check... 评估为 True,则只有在否时才能达到该回报
  • 请不要粘贴代码截图。花时间正确复制、粘贴和格式化此站点的代码。
  • 您还可以将代码简化为return any(check_space(board, i) for i in range(1, 10)),这将在任何匹配时返回 True 或在没有匹配时返回 False,就像您自己的代码一样。 docs.python.org/2/library/functions.html#any

标签: python python-3.x


【解决方案1】:

如果是的话

for i in range(1,10):
    if space_check(board, i):
         return False
    else:
         return True

然后在 for 循环的第一次迭代之后,函数将返回。这不会导致预期的行为。目前,您检查每个空格,而不仅仅是第一个

【讨论】:

  • 返回True在循环外,不在循环内。
  • 那你为什么要把它放在循环中?
  • 因为这是操作员要求的不? '那张图片的最后一行是 (return True),为什么不是 (Else: return True)'。如果代码如操作建议的那样,那就错了
  • 您可以在 else 属于 for 循环的循环之外拥有 else:return True。仅当 if 检查永远不会评估为 True 时,才会达到外部返回
  • 他们的措辞不是 100% 清楚,但他们完全误解的是你只能从一个函数返回一次,所以没有 布尔值被覆盖
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2022-12-18
  • 2012-02-17
  • 2018-09-11
  • 1970-01-01
  • 2015-05-08
相关资源
最近更新 更多