我真的很抱歉我对python的理解和英语。 我刚刚开始学习Python,但真的不了解下两个代码之间的区别:
def arrayCheck(nums):
"""
find nums
"""
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
result = arrayCheck([1, 1, 2, 3, 1])
print(result)
运行此代码时,结果为True
还有下一个:
def arrayCheck(nums):
"""
find nums
"""
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
else:
return False
result = arrayCheck([1, 1, 2, 3, 1])
print(result)
第二个代码返回False。
为什么? 预先感谢。
答案 0 :(得分:2)
第一个代码只能返回True
或None
。在return语句之后,该函数结束,因此第一个代码永远不会到达return False
语句。
如果前三个项目不是1、2和3,则第二个代码将返回False
,因为如果条件不成立,则它返回False
。
我实际上假设这是您感兴趣的代码-
def arrayCheck(nums):
"""
find nums
"""
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
请参阅Python控制流here。
答案 1 :(得分:1)
在python中,缩进很重要,而return将中断该函数,因此,在您拥有的第一个代码块中
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
两个return
处于相同的缩进级别,因此如果满足条件,它将转到第一行return True
,
请参阅返回并突破功能,然后忽略所有内容
但是在第二个代码块中
你有
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
else:
return False
因此,如果条件为true,它将返回true并退出该函数 但是如果条件不为true,它将返回false并中断该函数,因此它仅执行您尝试执行的迭代之一。
如果我了解您要正确执行的操作,则可以找到解决方法:
def arrayCheck(nums):
"""
find nums
"""
found = False
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
found = True
return found
result = arrayCheck([1, 1, 2, 3, 1])
print(result)
之所以起作用,是因为它允许该函数检查for循环中的每个迭代,如果找到了数字,它将返回true
答案 2 :(得分:1)
在第一个代码中,如果条件没有其他部分。在第二代码中, if 条件包含else部分。 因此,当第一个代码中的 if 条件为false时,它将进行第二次迭代,并且条件根据输入变为True并返回True。 但是在第二个代码中,如果条件为假,它将返回其他部分并返回假。
答案 3 :(得分:0)
在第一个代码False
中将永远不会执行,因为它位于if条件中,并且位于它之前的另一个arr = list(filter(lambda x: x != 0 , arr))
语句return False
中。返回函数后,将停止执行。
在第二个代码中,如果条件第一次失败,则由于return
在else条件下,函数执行将停止。