首页 > 解决方案 > 函数中的返回工作不正确

问题描述

嘿 Stackoverflow 社区,

我是蟒蛇新手。

所以,我正在尝试从头开始构建函数 any() 。但是我得到的输出不是我所期望的。如果没有第二个 if 语句,我的代码可以正常工作:

def anys(lst):
    for i in range(0,len(lst)):
        if bool(lst[i])==True:
            return True

anys([False,True,False]) 按预期执行 True。但是,当我添加第二个 if 语句时,我得到了不同的结果:

def anys(lst):
    for i in range(0,len(lst)):
        if bool(lst[i])==True:
            return True
        if bool(lst[i])==False or len(lst)==0:
            return False

anys([False,True,False]) 执行 False。

谁能帮助我我做错了什么?任何帮助将不胜感激。

标签: pythonlist

解决方案


当您使用 return 语句时,函数将停止执行,并按照指示返回到调用函数的位置。这意味着该函数将在列表中的第一个元素处返回,因为它是False. 如果您希望函数在所有元素都为 false 时返回 false,我建议您将return False语句放在 for 循环之后。

为了清楚起见,循环从列表中的第一个元素开始,在本例中为False. 元素满足条件:

if bool(lst[i])==False or len(lst)==0:

然后该函数将返回 False。


要回答评论,如果您遍历整个列表,并且没有一个元素是真的(换句话说,“任何”),那么您想要返回 false。

def anys(lst):
    for i in range(0,len(lst)):
        if bool(lst[i])==True:
            return True
    return False

代码现在遍历列表,如果遇到True值,则返回 True,但是如果没有任何元素为 True,则返回 False。


推荐阅读