def first_even(items):
""" (list of int) -> int
Return the first even number from items. Return -1 if items contains no even numbers.
>>> first_even([5, 8, 3, 2])
8
>>> first_even([7, 1])
-1
"""
counter = 0
for item in items:
counter = counter + 1
if item % 2 == 0:
return item
elif counter == len(items):
return -1
详细信息详细信息详细信息详细信息
答案 0 :(得分:1)
在这种情况下,你也可以返回-1
:
counter = 0
for item in items:
counter = counter + 1
if item % 2 == 0:
return item
elif counter == len(items):
return -1
return -1
当items
为空时,for循环根本不会返回,它将直接转到最后一行return -1
。
答案 1 :(得分:0)
我建议采用不同的方法:在找不到偶数整数时引发异常。这是一个实现:
def first_even(items):
"""Returns the first even integer in an iterable producing ints.
Raises
------
ValueError
If the iterable contains no even integers, or is in fact
empty.
"""
for item in items:
if item % 2 == 0:
return item
else:
raise ValueError('The list contains no even items.')
为什么要举例外?如果使用返回值-1
来表示错误,那么在某些情况下使用您的函数会变得棘手。例如,假设我想检查列表中的第一个偶数整数是否为负数:
if first_even([3, -4, 5, 8]) < 0:
print('The first even integer is negative!')
这适用于 输入,但是:
if first_even([1, 3, 5]) < 0:
print('The first even integer is negative!')
无论如何都会打印消息!