美文网首页python入门
python第32课练习——异常值

python第32课练习——异常值

作者: YoYoYoo | 来源:发表于2019-06-02 10:47 被阅读0次

    1、以下代码是否产生异常?如有,异常名称?

    >>> my_list = [1,2,3,4,,]
    

    答:语法错误。 SyntaxError: invalid syntax

    2、以下代码是否产生异常?如有,异常名称?

    >>> my_list = [1,2,3,4,5]
    >>> print(my_list[len(my_list)])
    

    答:超出索引。 IndexError: list index out of range

    3、以下代码是否产生异常?如有,异常名称?

    >>> my_list = [3,4,5,1,2]
    >>> my_list.sorted()
    

    答:初学者容易疏忽的错误,列表的排序方法是list.sort(),sorted()是BIF。因此会引发AttributeError: 'list' object has no attribute 'sorted'异常。

    4、以下代码是否产生异常?如有,异常名称?

    >>> my_dict = {'host' : 'xiaojiayu', 'port' : '80'}
    >>> print(my_dict['server']
    

    答:尝试访问字典中一个不存在的“键”引发KeyError: ‘server’异常,为了避免这个异常发生,可以使用dict.get()方法:

    if not my_dict.get('server'):
        print('您访问的键【server】不存在!')
    

    5、以下代码是否产生异常?如有,异常名称?

    def my_fun(x,y):
        print(x,y)
    f (x=1,2)
    

    答:如果使用关键字参数的话,需要两个参数均使用关键字参数f(x=1,y=2)

    6、以下代码是否产生异常?如有,异常名称?

    def my_fun1():
        x = 5
        def my_fun2():
            x *= x
            return x
        return my_fun2()
    
    print(my_fun1())
    

    答:闭包的知识还记得吗?Python 认为在内部函数的 x 是局部变量的时候,外部函数的 x 就被屏蔽了起来,所以执行 x *= x 的时候,在右边根本就找不到局部变量 x 的值,因此报错: UnboundLocalError: local variable 'x' referenced before assignment
    进一步可以使用关键字nonlocal,修改后如下:

    def my_fun1():
        x = 5
        def my_fun2():
            nonlocal x
            x *= x
            return x
        return my_fun2()
    
    print(my_fun1())
    

    相关文章

      网友评论

        本文标题:python第32课练习——异常值

        本文链接:https://www.haomeiwen.com/subject/ttotxctx.html