Python for循环忽略if语句

时间:2017-04-29 12:16:45

标签: python python-3.x for-loop if-statement

由于某种原因,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 

1 个答案:

答案 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")