Day3--Python训练营

主要内容异常处理。

一、标准异常总结
1. BaseException:所有异常的 基类
2. Exception:常规异常的 基类
3. StandardError:所有的内建标准异常的基类
4. ArithmeticError:所有数值计算异常的基类
5. FloatingPointError:浮点计算异常
6. OverflowError:数值运算超出最大限制
7. ZeroDivisionError:除数为零
8. AssertionError:断言语句( assert)失败
9. AttributeError:尝试访问未知的对象属性
10. EOFError:没有内建输入,到达EOF标记
11. EnvironmentError:操作系统异常的基类
12. IOError:输入/输出操作失败
13. OSError:操作系统产生的异常(例如打开一个不存在的文件)
14. WindowsError:系统调用失败
15. ImportError:导入模块失败的时候
16. KeyboardInterrupt:用户中断执行
17. LookupError:无效数据查询的基类
18. IndexError:索引超出序列的范围
19. KeyError:字典中查找一个不存在的关键字
20. MemoryError:内存溢出(可通过删除对象释放内存)
21. NameError:尝试访问一个不存在的变量
22. UnboundLocalError:访问未初始化的本地变量
23. ReferenceError:弱引用试图访问已经垃圾回收了的对象
24. RuntimeError:一般的运行时异常
25. NotImplementedError:尚未实现的方法
26. SyntaxError:语法错误导致的异常
27. IndentationError:缩进错误导致的异常
28. TabError: Tab和空格混用
29. SystemError:一般的解释器系统异常
30. TypeError:不同类型间的无效操作
31. ValueError:传入无效的参数
32. UnicodeError: Unicode相关的异常
33. UnicodeDecodeError: Unicode解码时的异常
34. UnicodeEncodeError: Unicode编码错误导致的异常
35. UnicodeTranslateError: Unicode转换错误导致的异常
二、标准警告总结
1. Warning:警告的基类
2. DeprecationWarning:关于被弃用的特征的警告
3. FutureWarning:关于构造将来语义会有改变的警告
4. UserWarning:用户代码生成的警告
5. PendingDeprecationWarning:关于特性将会被废弃的警告
6. RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
7. SyntaxWarning:可疑语法的警告
8. ImportWarning:用于在导入模块过程中触发的警告
9. UnicodeWarning:与Unicode相关的警告
10. BytesWarning:与字节或字节码相关的警告
11. ResourceWarning:与资源使用相关的警告
三、处理异常常用到的语句结构
1、try-except

try 语句按照如下方式工作:

1)首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)
2)如果没有异常发生,忽略 except 子句, try 子句执行后结束。
3)如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的
名称相符,那么对应的 except 子句将被执行。最后执行 try 语句之后的代码。
4)如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。
一个 try 语句可能包含多个 except 子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
2、try - except - finally 语句
不管 try 子句里面有没有发生异常, finally 子句都会执行。
如果一个异常在 try 子句里被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后被抛出。
3、try - except - else 语句
如果在 try 子句执行时没有发生异常, Python将执行 else 语句后的语句。
使用 except 而不带任何异常类型,这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获所
有的异常。
else 语句的存在必须以 except 语句的存在为前提,在没有 except 语句的 try 语句中使用 else 语句,会引发
语法错误。
4、raise语句
Python 使用 raise 语句抛出一个指定的异常。


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

 1 import random
 2 guess=random.randint(0,101)
 3 print("猜测一个0到100之间的整数。")
 4 i=1
 5 while True:
 6     print ("第%d次猜,请输入一个整数数字: "%(i))
 7     try:
 8         temp=int(input())
 9         i+=1
10     except ValueError :
11         print ("输入无效")
12         continue
13     if temp==guess:
14         print ("恭喜你猜到了这个数是",guess)
15         break
16     elif (temp>guess):
17         print ("太大")
18     elif (temp<guess):
19         print ("太小")
20 
21 猜测一个0到100之间的整数。
22 第1次猜,请输入一个整数数字: 
23 12
24 太小
25 第2次猜,请输入一个整数数字: 
26 98
27 太大
28 第3次猜,请输入一个整数数字: 
29 er
30 输入无效
31 第3次猜,请输入一个整数数字: 
32 45
33 太大
34 第4次猜,请输入一个整数数字: 
原文地址:https://www.cnblogs.com/mindy-snail/p/14170311.html