Python:我不明白这两者的区别

2024-04-29 07:06:42 发布

您现在位置: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

为什么?? 提前谢谢


Tags: and代码infalsetrueforlenreturn
3条回答

在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

第一个代码只能返回TrueNone。在return语句之后,函数结束,因此第一个代码永远不会到达return False语句。 如果前3项不是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

在第一个代码中,如果条件没有其他部分。在第二个代码中,如果条件有一个else部分。 因此,当如果条件在第一个代码中为false,它将进行第二次迭代,如果条件根据输入变为True,它将返回True。 但在第二个代码中,if条件为false,它将进行else部分并返回false

相关问题 更多 >