DataWhale_python训练营task3

三.Task03:异常处理(1天)

理论部分

  • 了解可能会出现的各类异常
  • 熟练掌握try_except_finally结构,使用raise语句抛出指定的异常。

练习部分

  • 猜字游戏

1.python标准异常总结

异常具有层次关系(如BaseException就是所有异常的总称)。

异常类型解释
BaseException所有异常的基类(基类就是父类,基本类型)
Exception常规异常的基类
StandardError所有内建标准异常的基类
ArithmeticError所有数值计算异常的基类
FloatingPointError浮点计算异常
OverflowError数值运算超出最大限制(溢出)
ZeroDivisionError除数为0异常
AssertionError断言assert异常
AttributeError尝试访问未知的对象属性
EOFError没有内建输入,到达EOF标记
EnvironmentError操作系统异常的基类
IOError输出/输入操作失败
OSError操作系统产生的问题(如打开不存在的文件)
WindowsError系统调用出错
ImportError导入模块失败异常
KeyboardInterrupt用户中断执行
LookupError无效数据查询的基类
IndexError索引超出序列范围
KeyError字典中不存在该关键词
MemoryError内存溢出
NameError尝试访问不存在的变量
UnboundLocalError访问未初始化的本地变量
ReferenceError尝试访问已经垃圾回收的对象
RuntimeError运行时的常见错误
NotImplementedError尚未实现的方法
SyntaxError语法错误导致的异常
IndentationError缩进错误导致的异常
TabErrorTab和空格混用
SystemError一般的解释器系统异常
TypeError不同类型间的无效操作
ValueError传入无效的参数
UnicodeErrorUnicode相关异常
UnicodeDecodeErrorUnicode解码时的异常
UnicodeEncodeErrorUnicode编码错误的异常
UnicodeTranslateErrorUnicode转化错误的异常

2.Python标准警告总结

警告类型解释
Warning所有警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构建未来语义会有改变的警告
UserWarning用户代码生成的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑语法的警告
ImportWarning用于在导入模块过程中触发的警告
UnicodeWarning与Unicode相关的警告
BytesWarning与字节或字节码相关的警告
ResourceWarning与资源使用相关的警告

3.try - except语句、try - except - finally语句 、try - except - else 语句 、raise语句

try - except

try:
	代码块(检测范围)
except Exception[as reason]:
	出现异常后的处理代码
-------------------------------
try:
	代码块
except OSError as error:
	print('打开文件出错\n原因是:' + str(error))
except TypeError as error:
	print('类型出错\n原因是:' + str(error))
except ValueError as error:
	print('数值出错\n原因是:' + str(error))

可有多个except分支,但异常需要从有针对性的到通用的,从而使调试和报错更有针对性。
可以在一个except分支中,用元组将多个异常类型包在一起
try-except流程图
在这里插入图片描述
try-except -finally语句

try:
	检测范围
except Exception[as reason]:   
	出现异常后的处理代码
finally:
	无论如何都会被执行的代码

try - except - else语句

try:
	检测范围
except:
	出现异常后的处理代码
else:
	如果没有异常执行这块代码

else 语句的存在必须以 except 语句的存在为前提,在没有 except 语句的 try 语句中使用 else 语句,会引发语法错误。
raise语句
Python 使用 raise 语句抛出一个指定的异常。

try:
	raise NameError('HiThere')
except NameError:
	print('An exception flew by!')

练习题

猜数字游戏
题目描述:
电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示
太小,当用户正好猜中电脑会提示,“恭喜你猜到了这个数是…”。在用户每次猜测之前程序会输出用户是第几次猜
测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。
(尝试使用try catch异常处理结构对输入情况进行处理)
获取随机数采用random模块。

import random
num = random.randint(0, 100)   # 产生0~100随机数
print(num)                     # 提前打印方便测试
i = 0
while(1):
    i += 1
    guess = input("这是你第%d次猜,请输入一个整形数字:" % i)
    try:
        guess = int(guess)  # 利用类型转换来判断是否有异常,若有异常会抛出ValueError
        if guess > num:
            print("太大")
        elif guess < num:
            print("太小")
        else:
            print("恭喜你猜对了,这个数字是%d" % num)
            break
    except ValueError:
        print("输入无效")

程序结果:
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值