当循环到达结尾时会发生什么?

3

我是Python初学者,没有任何编程经验。对于主题名称,我很抱歉,但我确实想不出更好的名称。

这里是我想要的:

letter = "w"   # search for this letter in the list bellow
listL = ["z","b","y","a","c"]

for let in listL:
    if let == letter:
        print "found it"
        break
    else:
        if  let == listL[-1]:
            print "nope can't find it"
        continue

我有一个字母列表,我想在列表中查找特定的字母。 如果我找到了这个字母,那么一切都好,for循环应该停止。 如果我没有找到它,我希望循环停止当前迭代,并尝试查找列表中的下一个字母。如果列表中没有任何一个字母包含这个特定字母,则应该打印“找不到”。 上面的代码可以运行。但我想知道是否可以更清晰地编写?当我说“清晰”时,我的意思是学者式的书本示例方式。 谢谢。
5个回答

6

Python为for循环提供了一个else语句,如果循环结束而没有被中断,则会执行这个语句:

for let in llistL:
    if let == letter:
        print("Found it!")
        break
else:
    print("nope could'nt find it")

那将是“学者方式”使用for循环,不过如果你只是测试列表中元素的存在性,Arkady的答案就是要遵循的。

谢谢您的回复,Cilyan。 我到目前为止还没有见过“for: else:”这个概念。 - marco
1
我是在这个网站上学习到的:https://dev59.com/oHVD5IYBdhLWcg3wE3No 你可能会在那里找到更多有用的构造。 - Cilyan

5
如何只是这样呢:
if letter in listL:
    print "found it"
else:
    print "nope..."

3

只需要使用in即可。

if let in listL:
    print("Found it")
else:
    print("Not found")

编辑:你比我快了30秒,恭喜!


注:本文涉及IT技术相关内容。


1

Python中实际上有一个 for: else: 结构,其中如果 for 循环没有 break,则会执行 else 语句块:

for let in listL:
    if let == letter:
        print("Found it")
        break
else:
    print("Not found")

或者,您可以使用list.index,如果在列表中找到项目,则会给出其索引,如果未找到,则会引发ValueError

try:
    index = listL.index(letter)
except ValueError:
    print("Not found")
else:
    print("Found it")

1
有必要在自己的答案底部添加其他人的答案吗?直接复制粘贴用户3254059的回答,至少要给他点赞的荣誉。 - OGHaza
我没有复制粘贴,但同意这里没有必要出现两次。 - jonrsharpe
其实我对于“try”和“except”的概念并不熟悉,所以你的回复也很有用。谢谢。 - marco

1
你的循环将不断循环,直到它打破(找到了!)或列表耗尽。您无需采取任何特殊措施来“停止当前迭代,并尝试使用列表中的下一个字母”。只要还有更多字母要检查,没有匹配的字母就会自动发生。
我们只想在搜索整个列表后显示“找不到”,因此我们不需要一直检查。这个else语句对应于for循环,而不是您之前代码中的if。
letter = "w"   # search for this letter in the list bellow
listL = ["z","b","y","a","c"]

for let in listL:
  if let == letter:
    print "found it"
    break #found letter stop search
else: #loop is done, didn't find matching letter in all of list
  print "nope can't find it"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接