我是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循环应该停止。 如果我没有找到它,我希望循环停止当前迭代,并尝试使用列表中的下一个字母。如果列表中的单个字母没有该特定字母,那么它应该打印“nope找不到它”。
上层代码有效。但我想知道这是否可以写得有点清楚?显然,我并不是指“先进的”,而是学者的方式,一种从书本方面的例子。
谢谢。
答案 0 :(得分:6)
Python为for循环提供else
语句,如果循环结束而不被破坏,则执行该循环:
for let in llistL:
if let == letter:
print("Found it!")
break
else:
print("nope could'nt find it")
这将是for
循环的“学者方式”,但是如果您只是测试列表中元素的存在,Arkady的答案就是要遵循的答案。
答案 1 :(得分:5)
如何:
if letter in listL:
print "found it"
else:
print "nope..."
答案 2 :(得分:3)
只需在
中使用即可if let in listL:
print("Found it")
else:
print("Not found")
编辑:你快30秒了,恭喜;)
答案 3 :(得分:1)
在Python中实际上有for: else:
构造,如果else
循环不 for
,break
会运行:
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")
答案 4 :(得分:1)
你的循环将一直循环,直到它破坏(找到它!)或列表已用尽。你不需要做任何特别的事情来“停止当前的迭代,并尝试使用列表中的下一个字母”。当字母不匹配时,我们不需要continue
,只要有更多的字母要检查,这将自动发生。
我们只想在搜索整个列表后显示“nope找不到它”,所以我们不需要检查直到结束。此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"