python入门

python第32课练习——异常值

2019-06-02  本文已影响0人  YoYoYoo

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())
上一篇 下一篇

猜你喜欢

热点阅读