我正在编写一个接受列表的函数,并检查它是否包含12。我不明白为什么如果有两个这样的return语句,该函数为什么不起作用。
def check_12(lst):
for i in lst:
if i == 12:
return True
else:
return False
test = [1,2,3,12]
print(check_12(test))
它应该返回True,但返回False。
答案 0 :(得分:1)
您返回得太早了,因此只能检查第一个元素是否为12
:
def check_12(lst):
for i in lst:
if i == 12:
return True
return False
请注意,您仅在之后知道循环完成之后,搜索到的元素不在其中。有一个实用工具(any
)用于此确切模式:
def check_12(lst):
return any(i == 12 for i in lst)
当然,在这种特殊情况下,还有一种更快的方法可以实现:
def check_12(lst):
return 12 in lst
答案 1 :(得分:0)
遍历整个列表后,而不是在第一次迭代中,您需要返回False(因此,请删除“ else”语句并将其向左移动一个选项卡)。
def check_12(lst):
for i in lst:
if i == 12:
return True
return False
test = [1,2,3,12]
print(check_12(test))