为什么当我没有放置else语句时,这段代码会返回None,但是当我把else语句放入时它不会返回None?

时间:2017-06-04 01:12:15

标签: python python-3.x pygal

为什么返回国家/地区代码?

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') 

主要区别在于我如何缩进'返回无。'即使我把else语句也没有返回代码。有人可以向我解释一下吗?我是编程新手。

2 个答案:

答案 0 :(得分:0)

缩进 差异 - 仔细检查缩进。在第二个示例中,return none位于for code循环中。因此,只要`name == country_name'失败一次,它就会返回None。

Python缩进的作用类似于基于C语言的大括号或BASIC方言中的Begin-End。这是Python的主要特质。

答案 1 :(得分:0)

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