Python从零开始系列连载(33)——Python异常处理

浏览: 4255

前言

前文传送门:

Python从零开始系列连载(1)——安装环境

Python从零开始系列连载(2)——jupyter的常用操作(上)

Python从零开始系列连载(3)——jupyter的常用操作(中)

Python从零开始系列连载(4)——jupyter的常用操作(下)

Python从零开始系列连载(5)——Python的基本数据类型(上)

Python从零开始系列连载(6)——Python的基本数据类型(中)

Python从零开始系列连载(7)——Python的基本数据类型(中二)

Python从零开始系列连载(8)——Python的基本数据类型(下)

Python从零开始系列连载(9)——Python的基本运算和表达式(上)

Python从零开始系列连载(10)——Python的基本运算和表达式(中)

Python从零开始系列连载(11)——Python的基本运算和表达式(中二)

Python从零开始系列连载(12)——Python的基本运算和表达式(下)

Python从零开始系列连载(13)——Python程序的基本控制流程(上)

Python从零开始系列连载(14)——Python程序的基本控制流程(中) 

Python从零开始系列连载(15)——Python程序的基本控制流程(中二)

Python从零开始系列连载(16)——Python程序的基本控制流程(下)

Python从零开始系列连载(17)——Python特色数据类型(列表)(上)

Python从零开始系列连载(18)——Python特色数据类型(列表)(中)

Python从零开始系列连载(19)——Python特色数据类型(列表)(下)

Python从零开始系列连载(20)——Python特色数据类型(元组)(上)

Python从零开始系列连载(21)——Python特色数据类型(元组)(下)

Python从零开始系列连载(22)——Python特色数据类型(字典)(上)

Python从零开始系列连载(23)——Python特色数据类型(字典)(下)

Python从零开始系列连载(24)——Python特色数据类型(集合)(上)

Python从零开始系列连载(25)——Python特色数据类型(集合)(下)

Python从零开始系列连载(26)——Python特色数据类型(函数)(上)

Python从零开始系列连载(27)——Python特色数据类型(函数)(中)

Python从零开始系列连载(28)——Python特色数据类型(函数)(下)

Python从零开始系列连载(29)——Python文件操作(上)

Python从零开始系列连载(30)——Python文件操作(中)

Python从零开始系列连载(31)——Python文件操作(中二)

Python从零开始系列连载(32)——Python文件操作(下)


我们学习上之路一路走来。。。啊,不对,我们一直在这个教室上课


遇到了很多运行后报错


报错了,也就是发生了异常情况!


有时候我们想让系统提供更具体的异常信息,帮助我们解决问题

有时候我们想忽略本次异常,让程序继续执行下去


那我们该怎么办呢?


怎么办爱情甜又酸

思绪收回【咻的一下】


在Python中,我们将可能出现异常的代码放在 ' 隔离区 ' 里运行


这样的话,出了问题不会影响其他部分


图片.png


try...except...


那怎么创建一个隔离区呢?


在Python中使用try...except 结构创建 ' 隔离区 ',也就是进行异常处理


try 包含的部分是放入可能出现异常的代码


except 部分是来处理发生的异常


结构是:


try:

可能引起异常的代码

except:

         对异常的处理代码


image.png


以上是正常情况,try的代码部分没问题,所以相对的except的代码部分不会执行


如果我们除数输入的是0:


image.png


则首先,系统没有报错,因为try中出错,则执行except中的内容,即打印‘出问题啦!’


当然,except会捕获try中所有可能出错的情况


但是except异常也分为很多种,比如值异常,命名异常等


因为这里是除0了,所以我们可以用除0异常来捕获这个异常


image.png


当然,当出现的不是除0错误时候,用除0异常就不能捕获其他种类的异常:


image.png


这里是值的异常,所以我们应该用ValueError来捕获这个异常:


image.png


注意到以上写了除0异常捕获和值异常捕获,而且他们像是if elif elif的结构


意味着当try中出错时,先用除0异常捕获,如果是除0异常,则捕获到,后面的值异常捕获则不执行(因为只可能是一种异常)


如果不是除0异常,则用值异常捕获,如果是值异常,则捕获到,如果是二者以外其它异常,异常没有被捕获,则运行报错


try...except...finally...


当我们出现异常时候,可以采用捕获方法,如果异常没被捕获,则运行出错,但是有时


有些代码我们一定要让它运行(不管之前有没有运行出错)


这时候,要在原先的try...except...结构中加入finally


finally,正如其名,是最后的意思


最后我一定要做的内容


当异常被捕获:


image.png


当finally之前出了异常,并且没有被捕获,照常执行finally中的内容:


image.png

下课


人生苦短,我选Python

未完待续,连载中.....


今日作业:

自己去搜索还有可能出现哪些常见的异常~

并找到Python中对应的异常模块


现在还坚持再看连载学习的你们真的很棒棒!

入门部分已经学完大部分啦!加油


下一篇:Python从零开始系列连载(34)——Python的time模块简单使用

推荐 2
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

3 个评论

name = input ('请输入姓名:')
try:
age = int (input ('请输入年龄:'))
height = float (input ('请输入你的身高(m):'))
weight = float (input ('请输入你的体重(Kg):'))
BMI = weight / (height ** 2)
if BMI < 18.5:
print ('您本次的BMI指数为%.2f,胖瘦程度为超轻'%BMI)
elif 18.5 <= BMI <= 24.0:
if int (BMI) == 22.0:
print ('您本次的BMI指数为%.2f,胖瘦程度为健康,属于理想数值,请继续保持。'%BMI)
else:
print ('您本次的BMI指数为%.2f,胖瘦程度为健康'%BMI)
elif BMI > 24.0 and BMI <= 28.0:
print ('您本次的BMI指数为%.2f,胖瘦程度为超重'%BMI)
else:
print ('您本次的BMI指数为%.2f,胖瘦程度为肥胖'%BMI)
except ValueError:
print ('请输入正确的年龄!')
伟大的大伟老师,上面这段代码我的目的是设计一个计算BMI的代码。您看我这段代码写的合理吗?目前的问题是当我输入年龄为负数时照常执行,该怎么解决呢?还有,当年龄输入有问题后,想要重新输入年龄,要怎么做呢?谢谢
在输入年龄之后加一个if语句判断 如果不合条件 循环 直到符合条件
很感谢大伟老师啊,学到了很多知识

要回复文章请先登录注册