我真的很抱歉我对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
为什么?? 提前谢谢
在python中,缩进很重要,return将分解函数,因此,在您拥有的第一个代码块中
两个
return
处于相同的缩进级别,因此如果满足条件,它将转到第一行return True
, 请参阅返回和中断函数,然后忽略所有内容 但是在第二个代码块中 你有因此,如果条件为true,它将返回true并中断函数 但是如果条件不为true,它将返回false并中断函数,因此它只执行您尝试执行的一个迭代
如果我了解您正试图正确执行的操作,这将是解决方案:
这是因为它允许函数检查for循环中的每个迭代,如果找到数字,它将返回true
第一个代码只能返回
True
或None
。在return语句之后,函数结束,因此第一个代码永远不会到达return False
语句。 如果前3项不是1、2和3,则第二个代码将返回False
,因为如果条件不成立,则返回False
我假设这就是你感兴趣的代码-
请参阅Python控制流here
在第一个代码中,如果条件没有其他部分。在第二个代码中,如果条件有一个else部分。 因此,当如果条件在第一个代码中为false,它将进行第二次迭代,如果条件根据输入变为True,它将返回True。 但在第二个代码中,if条件为false,它将进行else部分并返回false
相关问题 更多 >
编程相关推荐