欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DataWhale_python训练营task3

程序员文章站 2023-04-03 20:21:13
三.Task03:异常处理(1天)理论部分了解可能会出现的各类异常熟练掌握try_except_finally结构,使用raise语句抛出指定的异常。练习部分猜字游戏1.python标准异常总结异常具有层次关系(如BaseException就是所有异常的总称)。异常类型解释BaseException所有异常的基类(基类就是父类,基本类型)Exception常规异常的基类StandardError所有内建标准异常的基类ArithmeticEr...

三.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 缩进错误导致的异常
TabError Tab和空格混用
SystemError 一般的解释器系统异常
TypeError 不同类型间的无效操作
ValueError 传入无效的参数
UnicodeError Unicode相关异常
UnicodeDecodeError Unicode解码时的异常
UnicodeEncodeError Unicode编码错误的异常
UnicodeTranslateError Unicode转化错误的异常

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流程图
DataWhale_python训练营task3
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("输入无效")

程序结果:
DataWhale_python训练营task3

本文地址:https://blog.csdn.net/qq_29380039/article/details/107487101