由于某种原因,python忽略了我的if语句,即使str(search)
在我的列表lista
中,它仍会打印出elif语句。
我做错了吗?
search = input("what would you like to search for?:")
for n in range(len(lista)):
if str(search) in lista[n]:
print(lista[n])
elif str(search) not in lista[n]:
print("search not found in list")
break
答案 0 :(得分:0)
如果elif
未在第一个位置找到 ,则break
将结束循环(由于search
)(因为if
对列表中的每个项目执行1}}和elif
。在您的情况下,您可以简单地使用“触发器”来指示至少一个发现并在循环后执行if
:
found = False
for n in range(len(lista)):
if str(search) in lista[n]:
print(lista[n])
found = True
if not found:
print("search not found in list")
然而,更好的方法是直接迭代列表而不是长度范围:
found = False
for item in lista:
if str(search) in item:
print(item)
found = True
if not found:
print("search not found in list")
如果你不喜欢触发器,你也可以使用条件理解来获得所有匹配并使用匹配数作为间接触发器:
findings = [item for item in lista if str(search) in item]
if findings: # you got matches:
for match in findings:
print(match)
else: # no matches
print("search not found in list")