我想知道为什么下面的代码要求我们输入found = false,然后在if语句中找到= true.
def findinList():
list = [["Dog" , "der Hund"] , ["Cat" , "die Katze"] , ["Bird" , "der Vogel"]]
key = "Cat"
found = false
for item in list:
if item[0] == key:
print item[1]
found = true
break
if not found:
print "Value not in list"
Run Code Online (Sandbox Code Playgroud)
这是我(错误)的理解.如果item [0] == key(它确实),则if语句为true.所以它不应该在它打印项目后突破它吗?为什么我们需要found = false/true.
当你解释答案时,你可以用一个非常容易理解的定义解释它,因为我对这一切都是新手,太多的细节会导致我的理解中出现轻微的崩溃.
你需要这个found标志,因为一旦一个for循环结束,你就无法确定它是否已经停止了,因为你已经爆发了它,或者循环因为它循环遍及整个列表而自行停止.
Python实际上有一个更简洁的方法来执行此操作else,您可能会发现它更容易理解:
for item in list:
if item[0] == key:
print item[1]
break
else:
print "Value not in list"
Run Code Online (Sandbox Code Playgroud)
else只有在没有break循环的情况下才会执行块中的代码,如果您从未找到该单词,则会执行此操作.
此外,你在这里不是一本字典.这是一个清单.您可能想要使用实际字典:
words = {
"dog": "der Hund",
"cat": "die Katze",
"bird": "der Vogel"
}
Run Code Online (Sandbox Code Playgroud)
您的代码将变得更加简单:
key = 'dog'
if key in words:
print words[key]
else:
print "{} isn't in the dictionary".format(key)
Run Code Online (Sandbox Code Playgroud)