Python 迭代器,错误、异常处理

 

迭代器

迭代器可以用来遍历字符串、列表、元组、集合、字典。

myString="hello"
myIter=iter(myString)  ##iter()函数可以获取元素集的一个迭代器
for i in  myIter:   #遍历每个字符print(i)myList=[1,2,3,4]
myIter=iter(myList)
for i in  myIter:  #遍历列表、元组、集合print(i)mySet={"name":"张三","age":18}
myIter=iter(mySet)  #字典比较特殊,获取到的是key的迭代器
for i in myIter:  #i表示一个keyprint(i)   #输出keyprint(mySet.get(i))  #输出对应的value

 

 

可以使用next()获取下一个元素:

myList=[1,2,3,4]
myIter=iter(myList)
i=next(myIter)  #获取迭代器中的下一个元素,参数是迭代器。最初指针指向第一个元素之前。
print(i)  #1
print(next(myIter))  #2

 

 

 

 

错误、异常处理

try:print(2/0)   #可能出现问题的语句块
except Exception as  e:   #捕获异常,try和except必须配对使用,如果有try,就必须要有except来捕获处理。print(e)   #处理异常,如果不想处理,可使用raise再次抛出此异常,交给上一级程序单元来处理。
else:   #可选,如果try语句块没有出问题,那么try语句块执行完毕就会自动执行else语句块print("no error and exception")
finally:  #可选,不管try语句出不出现问题,都会执行finally语句块print("over")

 

 

except语句

ecxcept语句用来捕获、处理错误、异常。

a=input("请输入被除数:")
b=input("请输入除数:")
a=float(a)  #从控制台输入的都是String类型,需要强制转换
b=float(b)
try:print(a,"÷",b,"=",a/b)
except ZeroDivisionError as e:  #捕获一个具体的异常。当然也可以直接捕获Exception,即捕获、处理所有的异常,但太笼统了,不方便对应处理异常。print(e)  #输出异常信息

 

 

 as e  as是关键字,e是e是捕获的异常实例(对象),可以自己随便取名。

如果异常处理中用不到捕获的异常对象,可以不要as部分:

except ZeroDivisionError:print("除数不能为0")

 

 

可以有多个except语句,但try语句块出现问题时,只会执行一个except语句(靠前的匹配)。

try:#.....
except ZeroDivisionError:print("除数不能为0")
except FileExistsError:print("文件不存在")
except IndexError:print("索引错误")

 

 

可以在一个except中捕获、处理多种异常:

try:#....
except (ZeroDivisionError,FileExistsError,IndexError):   #使用一个except捕获多种异常时,需要使用元组形式#...

 

 

捕获所有种类的异常:

except Exception:  #捕获所有种类的异常#...

如果是捕获所有种类的异常,可以缺省Exception,直接写成except:

except:#...

 

 

 

 

raise语句

raise语句可以抛出一个异常:

def test():print("start")raise FileExistsError  #抛出一个FileExistsError异常,可根据需要选择异常类
try:test()
except Exception:#处理

 

 

可以自定义异常信息:

def test():print("start")raise Exception("xxx错误")  #括号中写自定义的异常信息
try:test()
except Exception as e:print(e)  #xxx错误  输出我们自定义的异常信息

 

 

try语句块中,一旦抛出了异常,不管是程序本身出问题抛出的异常,还是我们手动抛出的异常,try语句块中后面的代码都不再执行:

try:print("start")raise Exceptionprint("end")  #此句代码不会执行
except Exception:print("exception")

 

 

使用了try,就必须要有except来捕获、处理异常,如果不想处理或者已处理一部分、但还需要交给上一级程序单元来继续处理,可以使用raise再次抛出异常。

在except语句中使用raise时,如果抛出的是当前捕获的异常,可以直接写成raise:

except ZeroDivisionError:raise  #把捕获的异常抛给上一级的程序单元处理

我们也可以先做一些处理,再抛给上一级程序单元做进一步处理。

 

 

当然,我们也可以自定义异常类,抛出自定义的异常:

class MyException(Exception):  #需要继承Exception类#根据需要重写方法
try:#...raise MyException  #抛出自定义的异常
except MyException as e:#处理  可以调用我们重写的方法来处理

 

转载于:https://www.cnblogs.com/chy18883701161/p/11296789.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

群体决策是如何误入歧途的

1986年,刚刚升空不久就发生爆炸的挑战者号航天飞机。© Boing Boing来源: 利维坦文:Joshua Holden译:以实马利校对:兔子的凌波微步原文:nautil.us/what-makes-group-decisions-go-wrong-and-right-1340…

2020年9月26日-02-软件工程-工程化思维+瀑布模型+敏捷开发

此博客用于记录2020年9月26日每日分享, 软件工程中的集中常见模式,瀑布模型,敏捷开发等 日期:2020年9月26日 主题: 讨论讨论怎么使用软件工程的思想来解决问题软件工程中的集中常见模式,瀑布模型&#xff…

PowerDesigner15在win7-64位系统下对MySQL 进行反向工程以及建立物理模型产生SQL语句步骤图文傻瓜式详解...

1、安装PowerDesigner15、MySQL5.不详细讲解了。网上一大把。请各位亲参考去。 2、安MyODBC-standard-3.51.0.7-win.msi、mysql-connector-odbc-5.1.5-win.msi两个文件。可以支持odbc在win7下创建连接。 3、安装好之后,最好重新启动系统。不要试图在win7控制面板内找…

转换机器学习:面向多学科问题,构建机器学习新生态

来源: 集智俱乐部作者:Ivan Olier译者:郭瑞东审校:张澳编辑:邓一雪导语机器学习方法在生命、物理、社会经济等复杂系统的应用日渐频繁。如何针对特定任务选取合适的机器学习方法,如何综合利用各类机器学习方…

后端好的文章推荐

文章目录redismysqljava小牛肉笔记杂项vuespringmybatisspringboot运维jenkinslinuxdocker项目计算机四大件计算机网络设计模式好奇心redis 缓存穿透、缓存击穿、缓存雪崩区别和解决方案 Redis、Kafka 和 Pulsar 消息队列对比 mysql MySQL数据库主从同步 java 小牛肉笔记 …

nginx正向代理 反向代理

1、正向代理 1.我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站 2.于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。 3.客户端必须设置正向代理…

【综述专栏】从微分几何和代数拓扑的视角来重新探讨图神经网络

来源:知乎—努力努力再努力q地址:https://zhuanlan.zhihu.com/p/435040892在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可…

2021-07-27-jeesite学习笔记

2021年7月30日 https://blog.csdn.net/weixin_43886319/article/details/102668518 日了狗 2021年7月29日 sqlJenkins充吧 第一天 参考博文 安装jdk https://blog.csdn.net/qq_42815754/article/details/82968464 有关linux环境变量 https://blog.csdn.net/ljheee/articl…

nuxt项目打包上线之二

之前写过一篇nuxt打包上线的文章,请看这里:https://www.cnblogs.com/daisygogogo/p/11218809.html 上一篇文章的部署流程有点不好的地方,就是它适用于只有唯一一个后台接口路径的部署,不适合需要根据多个环境切换后台接口的情况。…

elasticsearch-1

单实例安装 1、官网下载tar压缩包 https://www.elastic.co/downloads/elasticsearch 2、将下载好的压缩包elasticsearch-5.5.2.tar.gz上传到linux服务器,并解压缩 tar -vxf elasticsearch-5.5.2.tar.gz 3、cd进入到elasticsearch-5.5.2目录中,启动ela…

清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!...

来源:AI科技评论不久前,DeepMind 的团队发布了一个可以自动生成竞赛级代码的人工智能系统——AlphaCode,号称「媲美普通程序员」,一经发表就在国内外的AI圈里引起了巨大轰动。 -论文地址:https://storage.googleapis.c…

(SQLlite3 Source Code 系列之一) 前言

(写在前前面, 研究什么都是要 Read the fucking source code ! 否则就是雾里看花。当然分析源码是很痛苦的过程,人都是想走捷径的,但是我的经验告诉我:选择不走捷径才是真正的捷径。记住了,出来混&#xff…

css基础选择器

文章目录css简介css语法规范css代码风格:css选择器的作用css基础选择器标签选择器:类选择器多类名选择器id选择器:id选择器和类选择器的区别:通配符选择器:选择器总结css简介 ​ CSS 是层叠样式表 ( Cascading Style …

深度学习模型模拟大脑地形图,有助于回答大脑不同部分如何协同工作

来源:ScienceAI编辑:凯霞大脑中处理视觉信息的部分——颞下(IT)皮层——受损可能是毁灭性的,尤其是对成年人而言。那些受影响的人可能会失去阅读能力(一种称为失读症的疾病)或辨认面孔&#xff…

深度学习再登Science:万物皆可做神经网络处理器,你甚至可以用锅碗瓢盆

来源:机器学习研究组订阅想象一下,你周围的任何东西,比如一个煎锅、一个玻璃镇纸,都可以用来当成神经网络的中央处理器,那是什么感觉?神经网络简单来说,是一种模仿大脑执行复杂任务的只能系统&a…

css目标

第一天 第二天

Gotta Catch Em All!——三元环计数

传送: https://vjudge.net/problem/Kattis-gottacatchemall 前置知识: 三元环计数 https://www.cnblogs.com/Dance-Of-Faith/p/9759794.html 思路: 首先去重边,记每个点的度数为n,三元环个数为m,答案为(∑…

【前瞻】机器人领域十项前沿技术

来源:工业互联网观察 机器人大讲堂近些年来,机器人行业发展迅速,机器人被广泛应用于各个领域尤其是工业领域,不难看出其巨大潜力。与此同时,我们也必须认识到机器人行业的蓬勃发展,离不开先进的科研进步和…

day27 网络编程一

网络编程 基础 一 软件开发架构 # c/s架构(client/server) c:客户端 / s:服务端 # b/s架构(browser/server) b:浏览器 / s:服务器 ps:bs架构本质也是cs架构 手机端看上去cs架构比较火,实际上bs已经在崛起,微信支付宝都在做一件事:统一接口,手机端之后肯定也是bs比较火 未来应用…

不止摩尔定律,计算领域值得学习的定律还有哪些?

来源:新智元当下,计算机领域最受欢迎的两大定律是:摩尔定律和梅特卡夫定律。摩尔定律,是以Intel(英特尔)联合创始人Gordon Moore(戈登•摩尔)为命名,摩尔定律预言,芯片上…