首页 > 解决方案 > 为什么 return True 必须在 if 语句和 for 循环之外?

问题描述

我正在尝试查看 lst2 是否与 lst1 相反。

对于以下代码,为什么return True必须在 if 语句之外。当我使用 if 语句放置 else: return False 时,两个打印都返回 True(这是不正确的)。谢谢!

def reversed_list(lst1, lst2):
  for index1 in range(len(lst1)):
    if lst1[index1] != lst2[(-1 - index1)]:
      return False
  return True


print(reversed_list([1, 2, 3], [3, 2, 1]))
print(reversed_list([1, 5, 3], [3, 2, 1]))

标签: python

解决方案


如果你把它放入if, 即放入与 相同的条件中return False,但在它之后,那么它将永远不会被执行,因为该函数将始终保留第一个return。或者它总是在if, before 中执行,离开它,从而无意中覆盖了预期的False. 这似乎是你正在观察的。

如果将它放入循环中(但在 之外if),它将在循环的第一次迭代期间执行,即太早了。

如果你把它放入循环中,但使用else,它仍然会执行得太早。在第一种情况下 not False。这仍然不是您想要的,因为您只想要 aTrueFalse循环中没有任何地方时,而不是已经在 not 的第一种情况下False

如果循环完全通过而不触发 False,您只想返回一个 true 布尔值。你想要这样,否则你可能会错过 False 的情况。

这就是为什么您在所示代码中描述和使用的位置(在 theif和循环之外)是唯一正确的方法。


推荐阅读