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

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

我正在尝试创建一个函数来检查列表中的偶数或任何可迭代的项目。当我将第一个数字保持为偶数时,它可以工作,但是当我将第一个数字保持为奇数时,它会分崩离析,它只会返回 false 并且不会为进一步的偶数报告 true。

有人可以解释一下为什么会发生这种情况吗,我是编程和学习 Udemy 课程的绝对初学者。我确实找到了解决方法,

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

这会检查到最后一个数字。

回答

您的第一个循环立即返回。它不会查看列表的任何其他部分。你的第二个例子做得很好。这

    else:
        pass

零件绝对没用。删除它们。

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

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

  • Might be more intuitive to use `True` instead of `1`, even though any value for which bool(value) is `True` would suffice.
  • Maybe it's a personal preference. But in my opinion if you mean `True` then use `True`.
  • @holdenweb For "intuitive", I'd go with `any(k % 2 == 0 for k in lst)`, which I think is the usual style. Though it's slower.

以上是为什么函数不检查到最后一个数字?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>