错误与异常
错误:错误代表的是在运行代码之前就可见(不是写代码的人看见是解释器看到)
常见错误:SyntaxError:Invalid syntax
异常: 程序运行期间遇到了问题, 报出错误
异常:在程序运行期间遇到了异常之后,如果异常不被处理或者不能处理,
程序会向Python解释器抛出异常,Python解释器如果接收到了异常,
那认为程序异常结束(exit code 1)
异常处理的操作: 我们去捕获异常,然后去处理(程序自己去做的)
那么Python解释器,就接收不到异常,
意味着程序不会异常终止
异常处理的语法:
try:
要执行的语句(1/0) # 可能出现异常的语句
except: #捕获异常
执行异常处理的语句
上面的语句有省略:
try:
要执行的语句(1/0) # 可能出现异常的语句
#捕获异常哪个异常
#except之后写的就是异常的类型
#Exception代表的是什么?它为什么可以接收ZeroDivisionError, 也可以接收NameError?
#Exception可以看作是所有其他异常的祖先
except Exception:
执行异常处理的语句
例子: ZeroDivisionError 是 ArithmeticError的儿子
ArithmeticError 是 Exception的儿子
假设: ZeroDivisionError他犯了错,
1.它可以自己承担 ZeroDivisionError
2.可以让他的父亲承担 ArithmeticError
3.可以让他的爷爷承担 Exception
没有错的话
try:
???
except indexerror:
???
else:
没错执行的语句
主动去抛出异常的语法
raise exceptiontype
重命名
try:
1/0
except ZeroDivisionError as zde
读写文件
操作文件:
读文件
以什么方式读文件
以文本方式去读(字符串)
以二进制的方式去读(字节)
写文件
以文本的方式去写
以二进制的方式去写
写文件:写的内容是覆盖,还是追加
覆盖:意味着会把文件原先的内容删掉
追加:原先的内容保持不变,只是在文件末尾添加
在python提供了一个函数来进行操作文件
open;打开一个文件:但是你可以用多种方式打开文件
open(file,mode=‘r’,buffering=None,encoding=None
errors=None)
file:问年间(路径+文件名)
mode:打开文件的方式
r读(默认) w写(先清空文件的内容)
x创建一个新的文件并以写 方式打开
a代表append以追加的方式去写 b二进制
t文本同时也是默认 +打开去更新(读和写)一个磁盘文件
work
1.打印 9 * 9乘法表:
格式:
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
......
9 * 1 = 9 9 * 2 = 18 ...... 9 * 9 = 81
# 1. 使用for循环来实现(嵌套循环)
# 2. 使用while循环来实现(嵌套循环)
# 3. 扩展: 使用单层循环(一层循环)
#1
for i in range(1, 10):
for j in range(1, i+1):
print(j, "x", i, "=", i*j, end=" ")
print("n")
#2
i = 1
while i < 10:
j = 1
while j < i+1:
print(j, "x", i, "=", i * j, end=" ")
j += 1
i += 1
print("n")
#3
i = 1
j = 1
while i < 10:
if j <= i:
print(j, "x", i, "=", i * j, end=" ")
j += 1
else:
i += 1
j = 1
print("n")
2.异常处理的使用:
1) 列表超出索引: list_data = [1, 2, 3] => list_data[3]
2) 定义一个元组: tuple_data = (1, 2, 3) => tuple_data[2] = 10
3) 定义一个字典:dict_data = {1: 2, 2: 3} => dict_data[3]
#IndexError
list_data = [1, 2, 3]
try:
print(list_data[3])
except IndexError:
print("超出下标")
#2
tuple_data = (1, 2, 3)
try:
tuple_data[2] = 10
except Exception:
print("元组不可变")
#keyerror
dict_data = {1:2, 2:3}
try:
dict_data[3]
except KeyError:
print("key值不存在")
3.文件操作:
a.写文本文件:
一次写入多行内容
关闭文件
重新打开,往文件追加新的一行内容
b.读文件:
读取前三十字符所在的行
#写入多行
file_obj = open('file.txt', 'w', encoding="utf-8")
file_obj.write("qiu1nqiu2nqiu3n")
#关闭文件
file_obj.close()
#追加内容
file_obj = open('file.txt', 'a', encoding="utf-8")
file_obj.write("qiuqiuqiu123456789n123456789n123456789")
file_obj.close()
#读取文件前三十字符所在的行
file_obj = open('file.txt', 'r')
print(file_obj.readline(30))



