def greet(language):
database = {'english': 'Welcome',
'czech': 'Vitejte',
'danish': 'Velkomst',
'welsh': 'Croeso'}
for k, v in database.items():
if language == k:
return v
# else: return('Welcome')
print(greet('czech'))
> Vitejte
如果我取消注释else: return('Welcome')
(如果问候语不在列表中),我希望收到“Welcome”,但无论我输入的是现有的还是不存在的语言,它都会返回“Welcome”。你知道吗
我也试过elif language =!= k
,但它似乎以同样的方式工作
你想要这个:
正如您的代码目前所处的状态,它只检查字典中的第一项。如果该键匹配,则返回适当的值。否则,它将返回“欢迎”,但它永远不会转到第二项。你知道吗
在我的代码中,它检查所有项,并在找到匹配项后立即返回正确的值。只有在找不到匹配项时,才会返回“欢迎”
顺便说一句,这是一个更简单的代码版本:
^{} 允许您执行字典查找,如果找不到项,则使用默认值。你知道吗
这基本上是简写的(但是
dict.get
是首选):像这样看,
for
循环将枚举项目。你知道吗假设
.items()
获取的第一项是'english': 'Welcome'
。现在,如果语言是而不是英语,那么if
将失败,因此执行else
部分,并返回'Welcome'
。只有当枚举的第一项确实是正确的语言时,程序才会返回该值。你知道吗然而,如果您使事情变得太复杂,您可以将
dict.get(..)
与回退值一起使用:这也将提高性能:您的原始程序具有O(n)时间复杂度,而字典的平均查找时间是O(1)时间。你知道吗
这是因为在到
else
的第一个分支中执行的return
语句从for
劫持控件,退出函数。例如,您可以将else
作为for
的一部分移动;指示'Welcome'
只应在for
完全耗尽时返回:或者使用字典的
get
方法返回默认值:相关问题 更多 >
编程相关推荐