大家有没有在学习呢?卡西准备来讲一下11关的课后习题啦!
今天的爬楼口令是:【第十一关习题讲解】
先来看11关的必做练习,由3个小练习组成
第1个,当我们执行这个错误代码的时候会报错,报错的意思是:
UnboundLocalError:赋值前引用的局部变量’sum_score’
问题在于,当我们在函数内给sum_score这个变量赋值的时候,因为全局也存在一个同名变量,所以程序分不清这里应该是全局变量,还是局部变量
那么,为了函数内可以正常使用变量,我们可以有两种处理方式
一种是把sum_score放在函数里面定义
一种是在函数内部,用global进行声明
第2个,当我们执行这个错误代码的时候不会报错,但是会陷入死循环
问题出在于这一句:if x == '小狗’ and x =='汪汪’:
这一句的意思是,当x既等于 小狗 ,也等于 汪汪 的时候,才满足if的条件
那我们思考一下,x是赋值了一次,是不是不可能存在同时存在两个值的情况
或者从生活上的逻辑想一下,当我们喊 小狗 或者 汪汪的时候,才满足条件
所以,这里只要把条件的逻辑连接符改为or,就可以了
第3个,被动掉坑的情况。当我们运行代码的时候,会报错ZeroDivisionError: division by zero
意思是除数为0
为了避免除数为0的报错,我们有两种debug方式
一种是利用今天学到的 try…except语句
相信大部分同学都想到这个了,但是有些同学可能会出现一个问题
把for循环放在try语句的里面,这样就会出现,当执行到except语句的时候,程序不会继续往下走了
这是因为,当程序执行到except的时候,被动跳出了循环。所以循环未完成的部分也就执行不到了
第二种解法是课堂的答案
这里用 if deposit[i-1] == 0: 来判断除数是否为0
比如说当 i 为6的时候,deposit[i-1]就是deposit[5],也就是0。此时不进行运算
而其他情况则执行else语句,进行运算和打印
也讲一下进阶练习吧,进阶练习其实存在多种报错可能的情况
当我们有多种报错的时候:
1)可以写多个except语句
2)写一个except语句,包含多个报错信息
3)用一个拢总的报错概括
这个进阶练习不难,但是同学们也需要自己动手写写看才可以哦
好啦,我讲完了。大家继续学习吧
联系客服