Python:不了解差异

时间:2020-04-05 13:16:54

标签: python

我真的很抱歉我对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。

为什么? 预先感谢。

4 个答案:

答案 0 :(得分:2)

第一个代码只能返回TrueNone。在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条件下,函数执行将停止。

相关问题