为什么函数直到最后一个数字才检查?

2024-06-26 02:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

def evenchecker(lst):
    for number in lst:
        return number%2==0
    else:
        pass

我正在尝试创建一个函数,用于检查列表中是否有偶数,或者是否有任何可匹配项。当我将第一个数字保持为偶数时,它会起作用,但当我将第一个数字保持为奇数时,它会分开,它只会返回false,对于后续的偶数,它不会报告true

有人能解释一下为什么会发生这种情况吗?我是一个编程的绝对初学者,从我的课程中学习。我确实找到了解决办法

def evenchecker(lst):
    for number in lst:
        if number%2==0:
            return "The list has an even number"
    else:
        pass

这个一直查到最后一个号码


Tags: 函数infalsenumber列表forreturndef
2条回答

第一个循环立即返回。它不会看名单上的任何其他部分。你的第二个例子做得很好。

    else:
        pass

零件是绝对无用的。移除它们

请注意,您可以在单行中执行该操作:

def evenchecker(lst):
    return any(k % 2 == 0 for k in lst)

您必须区分函数的结果是什么以及如何实现。您想知道列表是否包含偶数。这意味着无论哪种情况,您都必须迭代列表中的所有数字

for number in lst:
       return number%2==0

由于return立即返回结果,因此该函数只测试列表的第一个元素是偶数还是奇数。如果第一个元素为偶数,则返回true

但是原始代码(稍加修改)

for number in lst:
        if number%2==0:
            return true;
return false;

这将检查列表中的每个元素的数字是否为偶数(%modulo运算符),然后返回。所以“如果”在这里非常重要

相关问题 更多 >