1

为什么这会返回国家代码?

from pygal.maps.world import COUNTRIES 

def get_country_code(country_name): 
    """Return the Pygal 2-digit country code for the given country."""
    for code, name in COUNTRIES.items(): 
        if name == country_name:
            return code 
    return None 

print(get_country_code('Andorra'))
print(get_country_code('United Arab Emirates') 

为什么这不返回国家代码?

from pygal.maps.world import COUNTRIES 

def get_country_code(country_name): 
    """Return the Pygal 2-digit country code for the given country."""
    for code, name in COUNTRIES.items(): 
        if name == country_name:
            return code 
        return None 

print(get_country_code('Andorra'))
print(get_country_code('United Arab Emirates') 

主要区别在于我如何缩进'return None'。即使我放了 else 语句,它也不会返回代码。有人可以向我解释一下吗?我是编程新手。

4

2 回答 2

0

好的,JLH 是正确的。在第二组代码中:由于 else 在 for 循环中,因此列表中的第一个名称将触发 else 代码(除非您正在查找列表中的第一个 1),这将返回无。因此,除非第一个元素是您要查找的元素,否则它将始终返回 None。

于 2017-06-04T01:34:17.780 回答
0

缩进不同的——仔细检查你的缩进。在第二个示例中,return none位于for code循环内部。因此,一旦 `if name == country_name' 失败一次,它就会返回 None 。

Python 缩进就像 C 语言中的大括号或 BASIC 方言中的 Begin-End。这是 Python 的主要特性。

于 2017-06-04T01:16:18.673 回答