Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python初学者用户布尔查询_Python - Fatal编程技术网

Python初学者用户布尔查询

Python初学者用户布尔查询,python,Python,CodeAcademy的Python课程让我学习循环函数,但我不了解结果。目标是查看一个列表是否是另一个列表的镜像。i、 e.[1,2,3]至[3,2,1] 20分钟后,我查看了解决方案,我不明白为什么每次都不返回真值 def reversed_list(lst1, lst2): for index in range(len(lst1)): if lst1[index] != lst2[len(lst2)-1-index]: return False return T

CodeAcademy的Python课程让我学习循环函数,但我不了解结果。目标是查看一个列表是否是另一个列表的镜像。i、 e.[1,2,3]至[3,2,1]

20分钟后,我查看了解决方案,我不明白为什么每次都不返回真值

def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    if lst1[index] != lst2[len(lst2)-1-index]:
      return False
  return True
“return True”缩进到与“for index”相同的级别,这将覆盖从前一行返回的任何值

或者,当我在“if”缩进中引入“else”时,所有内容都返回True:

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

有人能帮助noob吗?

返回False会导致函数在返回False时完全退出,因此在这种情况下永远不会到达返回True行。如果您的语句
如果lst1[index]!=lst2[len(lst2)-1-index]
语句发现任何不匹配的项,我们的函数将在此时结束。不再执行任何代码


当您添加else语句时,这意味着如果有任何项不匹配,函数将返回True,并且不再执行任何代码。

您建议的第一个和第二个代码将提供不同的输出。 您应该知道,函数只能使用
return
一次

帮助的是打印出中间结果

一,

二,


使用添加的打印中间结果的行运行我的代码。您将看到第二个函数将只在第一个元素上迭代,然后返回
True
False
,在第一种情况下
返回True
是函数的结束。您必须迭代整个
范围(len(lst1))
才能到达它。因此,如果循环中的
if
的条件匹配,则执行
returnfalse
语句,函数在此结束


在第二种情况下,您从不遍历整个列表。在第一次迭代中,检查条件
lst1[index]!=lst2[len(lst2)-1-index]
其中
index=0
并返回真或假。

您需要了解每个函数只能
返回一次。在第二种情况下,只要第一次迭代没有满足它将立即返回
True
,所有后续迭代都不会运行。在第一个函数中,只有当每次迭代都满足条件时,才会返回
True
,否则它永远无法到达该行。
def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    print(index)

    if lst1[index] != lst2[len(lst2)-1-index]:
      print('False')
      return False

  print('True')
  return True
def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    print(index)

    if lst1[index] != lst2[len(lst2)-1-index]:
      print('False')
      return False
    else:
      print('True')
      return True