[python3教程]第四章.流程控制(if;for;break;continue;else;pass)

4.1 if结构

        下面我们来看一下可能是流程控制里最常用的结构(if):

elif是else if的缩写,这有助于避免过多的缩进。if...elif....elif...的功能和其他语言的switch或case的结构是一样的。当然elif和else都是选配项,就像买车的时候是否加bose音响一样~对了之所以我在powershell中用python3调用而不用python是因为我同时有两个版本的python,并且都添加了环境变量,所以将其中一个python.exe改名以便区分。

4.2 for结构

        python中的for结构和C或者Pascal有些区别(其实是更方便一些,真心不是黑)。在C语言中都是按数字迭代,在python中的for不只可以用数字迭代,可以在任何有序列的结构中迭代(比如list和string)举个栗子:

       如果你想在循环的同时修改列表本身,那你最好使用一个副本去循环,迭代一个列表并不会自动帮你生成副本哦~使用分片操作可以很方便的完成这个工作:

其实我在刚看到这个例子的时候也有点蒙圈,为啥words不行words[:]就可以了那?后来想了想原来words[:]虽然包含的元素和words是一样的,但他并不是words而是另一个sequence是words的副本,这样我们在使用words.insert的时候会改变words的内容,如果还在words里迭代的话可能出现死循环的情况,现在在words[:]里迭代就不会遇到这个问题,因为对words的修改并不会影响words[:]的内容。

4.3 range()函数

        如果想像C语言那样(i = 0;i++;i<5),可以使用range()函数:

看上去像不像是range生成了一个链表?事实上如果你print一个range()函数你会发现一个奇怪的现象:range看上去确实像是返回一个list但事实他并不是这样做的,其实他返回的是一个对象,这个对象在迭代的时候会将我们想要的数字序列返回,所以用起来就像是一个list一样。亲们可能好奇为啥要搞得这么麻烦,其实很简单为了节省空间而已。。。我对面向对象的理解就是。。没啥理解感觉和封装起来的C没啥太大的区别(博客中的很多话都是我的歪理邪说,和原文作者没啥关系啊!比如这条就是~),那么我们怎么让这个实例变成一个list哪:

4.4 break、continue、else

        break和在C中没啥区别就是跳出当前这一层循环,循环结构中可能有一个else选项,他会在全部遍历循环或者循环条件为假的时候执行(因为break而结束不在此列),我们来看个栗子:

在循环中使用else和在try中使用else是很像的,在try中没有异常时执行else,在循环中没有break执行else~

pass的话嘛,其实他啥也不干,就是有时候从语法上需要我们填点什么,但是我们并不希望任何事情被执行,这个时候就可以用pass了:或者是你有些功能已经想好了,但是还没时间去实现,那么可以先pass一下等过一会回来实现它~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值