异常捕获
1.什么是异常
异常就是程序在运行当中遇到的报错
为了程序的健壮性,就要捕获到指定异常并对异常进行处理
异常处理包括:断掉程序,重启程序,进入到指定的处理流程。
2.捕获异常
普通的if是捕获不到的
使用python自带的异常捕获语法进行捕获
【1】 try…except….一起使用
print(int('1'))
try:
print(int('a'))
# 异常捕获的try语法要和except搭配
except:
print(f'报错了')
3.异常捕获语法详细
当我们在程序中对某一快代码比较熟悉 我就能确保这块代码的报错一定是某一个
指定捕获指定的是异常
print(int('1'))
try:
print(int('a'))
# 异常捕获的try语法要和except搭配
except ValueError:
print(f'报错了{ValueError}') # 报错了<class 'ValueError'>
多分支异常捕获
try:
print(int('a'))
print(1/0)
except ValueError:
print(ValueError)
except ZeroDivisionError:
print(ZeroDivisionError)
4. 捕获基本异常
try:
print(int('a'))
except Exception as e:
print(e)
# invalid literal for int() with base 10: 'a'
5.触发异常
达到某个条件的时候我想要主动触发异常
for i in range(10):
if i == 6:
# 主动报错
# raise 错误类型
raise ValueError('不能为6') # ValueError: 不能为6
6.断言
达到某个为真的条件抛出
for i in range(0,10):
# 在源码中会大量出现
assert i == 6,'不能为6'
# AssertionError: 不能为6
推导式
【1】固定语法
(1)列表推导式
[表达式 for i in 列表/字典/可迭代类型]
[字符串切分/去重空格 for i in 列表/字典/可迭代类型]
[if 判断 for i in 列表/字典/可迭代类型]
(2)字典推导式
{key : value for key in 可迭代类型 for value in 可迭代类型}
【2】列表推导式案例
(1)直接用range关键字构建列表
# 列表生成式
num_list = [i for i in range(10)]
print(num_list)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 原始
num_list = []
for i in range(10):
num_list.append(i)
print(num_list)
(2)遍历列表
# 原始
name_list = ['silence', 'happy']
name_list_new = []
for name in name_list:
name_list_new.append('nb_'+ name)
print(name_list_new) # ['nb_silence', 'nb_happy']
#修改后的
name_list = ['silence', 'happy']
name_list = ['nb_' + i for i in name_list]
print(name_list)
(3)对每个空格进行取出空格
# 原始
user_data = []
with open('user_data.text', 'r', encoding='utf_8') as fp:
for line in fp:
user_data.append(line.strip())
#修改后
with open('user_data.text', 'r', encoding='utf_8') as fp:
user_data_list = [line.strip() for line in file]
print(user_data_list)
(4)利用一个元素生成新的列表
num_list = [i for i in range(10)]
num_list = [[num, num*num]for num in num_list]
print(num_list)
#[[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
(5)行列转换
# 原始
test = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
num_list = []
for i in range(len(test[0])):
num_list_ = []
for row in test:
num_list_.append(row[i])
num_list.append(num_list_)
print(num_list)
# 精简
test = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
list_new =[[row[i] for row in test] for i in range(len(test[0]))]
print(list_new)
(6)加入条件进行过滤
test = [1,2,3,4,5,6,7,8,9]
list_one = [x for x in test if x % 2 == 0]
print(list_one) # [2, 4, 6, 8]
【3】字典推导式案例
# 原始
user_data_dict = {}
with open('user_data.txt', 'r', encoding='utf-8') as fp:
for line in fp:
username, password = line.strip().split('|')
user_data_dict[username] = password
print(user_data_dict)
# 精简
with open('user_data.txt', 'r', encoding='utf-8') as fp:
user_data_dict= {line.strip().split('|')[0]:line.strip().split('|')[1] for line in fp}
print(user_data_dict)
标签:name,推导,data,捕获,list,num,user,print,异常
From: https://www.cnblogs.com/zyb123/p/18124539