计算机程序由两部分组成,数据和语句。每一类数据有一个对应的数据类型,不同编程语言有不同的分类方法,但是不管怎么说,任何语言都有整数、小数、字符串。但是程序都是需要对数据进行处理的,我们用语句来实现数据的处理,语句主要有两大类——条件语句和循环语句(当然还有赋值语句啥的)。在条件语句中,我们通常会写if … else …或者 if … elif … else …,这两个语句大家用的多应该都知道是如何执行的,我就不讲了。刚学编程的新手经常都会认为if和else必须成对出现,要么只能有if,反正就是不能单独出现else。实际上else可以脱离if而存在,但是else自己不能单独存在,但也不是所有的语句都能够和else缠在一起的,比如import语句。能够和else缠在一起的语句有3种:try … except … else …,while … else …,for … else …。下面将一一介绍这三种。
在有些情况下,在没有出现异常时执行一个代码块很有用。为此,可以使用try … except … else …语句,它的执行方式是当try执行完之后没有任何异常,跳过except,直接执行else的语句,如果有异常,要么被except排除,要么就程序崩溃。程序崩溃就不用多说了,必然不会继续执行了。当被except排除的时候,会执行完except语句里面的内容,然后直接跳过else执行后面的内容。下面来看一个例子。
运行结果如下:
这是在没有异常的情况下的执行结果,也就是try执行完后直接执行else了,接下来我们随便弄一个有异常的语句,代码修改如下:
很明显它会引发一个NameError的异常,因为我a没有定义就去使用,我捕捉的是异常基类,所以任何异常都能捕捉(除了SyntaxError,这个错误大部分情况并不是在运行时触发,而是在解释器检查语法时就触发了。如果想让这个错误在运行时触发,我们就需要绕过运行之前的语法检查,我们可以用exec这个函数传入一个字符串参数,exec是用来执行存放在字符串中的Python代码的,程序运行时,exec执行途中发现参数中有一处语法错误,这个时候语法错误是在运行时产生的,所以就可以被捕获。异常一定是在运行时产生的!)程序的运行结果如下:
从执行结果我们看出,它执行try里面的第一句就引发了异常,之后的也就都没有执行,直接跳到except了,然后跳过else执行后面的内容(后面啥都没有,直接正常退出了)。
通常,在循环中使用break是因为你“发现”了什么或“出现”了什么情况。要在循环提前结束时采取某种措施很容易,但有时候你可能想在循环正常结束时才采取某种措施。如何判断循环是提前结束还是正常结束的呢?可在循环开始前定义一个布尔变量,然后在满足条件需要break时,在break之前先将它进行逻辑非的运算,然后将结果付给其本身。这样就可在循环后面使用一条if语句来判断循环是否是提前结束的。如图所示:
一种更简单的方法是在循环后面添加一条else语句,它仅在没执行break时执行。修改上面的代码如下即可:
for … else …和while … else …执行过程完全一样,在这就不详细讲解了。这两个语句主要是用来手动实现顺序查找的,顺序查找就是从第一个找到最后一个,当然还有一种查找方式叫二分查找,二分查找比顺序查找快,但是只适用于排好序的数组。
本文分享自 Python机器学习算法说书人 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有