我正在尝试创建一个函数,该函数接受一个参数,该参数是一个国家,并定位该国家相邻的首都。例:
countries_and_capitals = (['Afghanistan', 'Kabul'], ['Albania', 'Tirana (Tirane)'], ['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella'],
['Angola', 'Luanda'], ['Antigua and Barbuda', "Saint John's"], ['Argentina', 'Buenos Aires'],
['Armenia', 'Yerevan'],
['Australia', 'Canberra']
def get_capital_from_the_country(cntry)
并在输入国家后显示大写字母。
一种方法是使用for
循环并遍历元组,同时解包两个值(国家和大写),然后如果找到与参数匹配的国家,则返回大写,如果没有找到国家,则返回消息(此方法更快):
countries_and_capitals = (['Afghanistan', 'Kabul'], ['Albania', 'Tirana (Tirane)'], ['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella'],
['Angola', 'Luanda'], ['Antigua and Barbuda', "Saint John's"], ['Argentina', 'Buenos Aires'],
['Armenia', 'Yerevan'],
['Australia', 'Canberra'])
def get_capital_from_the_country(cntry):
cntry = cntry.lower()
for country, capital in countries_and_capitals:
if country.lower() == cntry:
return capital
return 'Can't find that country'
print(get_capital_from_the_country('Afghanistan'))
# Kabul
print(get_capital_from_the_country('Afghanista'))
# Can't find that country
print(get_capital_from_the_country('afghanistan'))
# Kabul
print(get_capital_from_the_country('aFgHaniStan'))
# Kabul
另一种方法是将该元组转换为字典,然后通过使用.get
(返回特定消息而不是引发KeyError
)轻松访问键(国家)的值(大写):
def get_capital_from_the_country(cntry):
dct = {k.lower(): w for k, w in countries_and_capitals}
# alternatively can use:
# dct = dict(map(lambda x: (x[0].lower(), x[1]), countries_and_capitals))
return dct.get(cntry.lower(), 'Can't find that country')