为什么函数不检查到最后一个数字?
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.