首页 > 其他分享 >异常捕获与推导式

异常捕获与推导式

时间:2024-04-09 18:33:20浏览次数:20  
标签:name 推导 data 捕获 list num user print 异常

异常捕获

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

相关文章

  • Vue中component lists rendered with v-for should have explicit keys异常
    在Vue.js中,当你在组件列表中使用v-for指令渲染多个组件时,每个组件元素都应当有一个明确的key属性。Vue.js引擎通过这个key来优化虚拟DOM的diff过程,提升页面更新效率,并确保状态保持一致。例如,如果你有这样的代码:Vue<ul><liv-for="iteminitems">{{......
  • 贝叶斯定理推导(Bayes's Theorem)
    这里用文氏图(Venn diagram)来推导一下贝叶斯定理。 假设A和B为两个不相互独立的事件。 交集(intersection): 上图红色部分即为事件A和事件B的交集。 并集(union):  由Venndiagram可以看出,在事件B已经发生的情况下,事件A发生的概率为事件A和事件B的交集除以事件B: ......
  • 列表、字典推导式
    列表推导式固定语法:[表达式foriinlist/dict...判断语句][if语句foriinlist/dict...][字符串处理foriinlist/dict...]name_list=['a','b']name_new=['nb_'+iforiinname_list]print(name_new)字典推导式固定语法:[key:value......
  • 异常处理
    定义:程序运行过程中的问题和报错为了程序健壮,要捕获指定的异常并对异常进行处理:中断重启指定流程捕获异常if语句无法捕获python自带的异常捕获语法try:except:捕获基本异常try:print(int('a'))exceptExceptionase:print(e)#捕获异常......
  • Python中的异常处理 异常是什么? 异常处理的语法 基本的异常处理示例 捕获多个异常 fin
    Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例捕获多个异常finally语句自定义异常异常处理的最佳实践——《跟老吕学Python编程》附录资料Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例Python捕获多个异常finally语句Py......
  • 第七章 常用API&异常
    7-1API的基本使用System类方法说明publicstaticvoidexit(intstatus) // 终止当前运行的Java虚拟机,非零表示异常终止publicstaticlongcurrentTimeMillis() //返回当前时间(以毫秒为单位)  Objects类(应用)说明publicstaticStringtoString(对象)//返回......
  • 【机器学习】利用Autoencoder进行无监督异常检测(含代码)
    Autoencoder算法是一种常见的基于神经网络的无监督学习降维方法(其他常见降维方法)。文章目录一、Autoencoder简介二、Autoencoder无监督异常检测三、利用Antoencoder检测信用卡欺诈四、完整代码一、Autoencoder简介Autoencoder,中文称作自编码器,是一种无监督式学习模......
  • 蓝桥杯,推导部分和
    题意:给定若干个区间端点与区间和,还有若干个查询,求该查询的区间和。思路:带权并查集。总结:区间左端点-1是为了左开右闭(也可以右端点+1)。比如[1,2]=(0,2]=5,[3,4]=(2,4]=6。这样就得到了[1,4]=11(查询1可以直接得到代表元素4),处理边界情况更方便。可以思考一下,如果不......
  • Java-异常机制处理
     packagecom.it;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassTest01{publicstaticvoidmain(String[]args){test03();}publicstaticvoidtest01(){System.out.println("111");......
  • openGauss数据库源码学习-指标采集、预测与异常检测
    opengauss源码解析指标采集、预测与异常检测代码位置:/gausskernel/dbmind/tools/anomaly_detection各模组在整体结构上的组合在摩天轮论坛上官方解析文章已经叙述的相对完整详尽。该报告对应为具体模块内部的实现。Agent模块代码位置:~/agentAgent模块负责数据库指标数据......