【Python教程】八、码农一张嘴,程序跑断腿|for循环

更多教程请私信~

来源:思路实验室 

作者:室长

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

上一期我们讲到了if语句,在符合某种条件的情况下执行一些代码。我们的程序比之前有了很大的进步,但这还远远不够。我们在引言中提到过一种情况:

比如说要实现一个折腾大象的程序,就可以这样:把大象装冰箱,把大象拿出来,把大象装冰箱,把大象拿出来……

我们之前把“把大象装冰箱”写成了函数,每次操作只需要调用函数就可以了,看起来方便了很多,但如果我们想写一个“折腾大象”的程序,把大象装冰箱一百次,难道我们要写一百行代码来调用函数吗?而且如果我们今天想关一百次,明天想关二百次,难道还要重新写一遍代码吗?

NONONO!这根本不符合我们“懒”的原则,因此for语句就到出场的时候了。它的写法大概是这样的:

for 什么玩意 in 一大堆玩意:

    blablabla...

这个句子我们用英语的方式给它翻译一下:“对于‘一大堆玩意’里的‘什么玩意’,我们要blablabla...”。事实上程序也基本上是这么操作的,唯一的区别就是,程序会把这‘一大堆玩意’里的所有的‘什么玩意’都安排一遍才结束。

我们再次注意for语句最后的小冒号,它再次提醒我们后边的代码从属于for语句,记得要缩进。

我们实际写一个例子看一看:

这里室长把之前的“装冰箱”函数修改了一下,因为只是作展示用,没有必要把所有的内容都打印出来。另外写了一个“取出来”的函数,毕竟冰箱装一个大象已经很努力了,让它装好几个确实为难。然后再把装冰箱和取出来写进一个“单次折腾”的函数,这就是折腾大象的单元操作

所以剩下我们需要的就是把这个单元操作重复若干次。如果你愿意,让程序重复几千次几万次都可以,反正就是多打几个0的事(我们不为996辩护,但向奋斗者致敬)。

为了防止打印的内容把室长的屏幕撑爆,这里就设置为5次。我们的for语句就写为:“for i in range(5)”。不理解也没有关系,稍后室长会详说。我们来运行一下:

可以看到大象被结结实实地关进了冰箱五次。

那我们再回过头来看一看“for i in range(5)”。看到range的颜色相比大家已经明白了,这又是一个内置函数。同时因为它在for语句中的位置,我们可以推测它的返回值是“一大堆玩意”。让我们来写个代码看一看range(5)的返回值是什么:

这返回了个寂寞啊!看来得采取迂回战术了。根据for的语法来说,range(5)是一大堆玩意,那i就应该是一大堆玩意里的什么玩意,那我们把i打印出来不就知道range(5)是一大堆什么玩意了吗?

0,1,2,3,4,就是没有5。不知道大家还记不记得室长在第六期给大家的谆谆教诲:

Python是一门真正的从零开始的语言。

所以它是列表吗?我们再用上期的type函数查看一下:

(代码是可以这么写的但是不推荐,套来套去脑袋都乱了,这已经不是套娃而是吞鲲了……)

可以看到类型还是range,不是list,所以它并不是列表。因此大家要记住了,以后如果想生成一个连续数字的列表,不可以直接用range函数。

讲了太多有点跑题了,关于range函数的详细用法室长会在函数番外篇再详细介绍。

但这个一大堆玩意的位置可不可以用列表呢?我们试一试:

结果是一模一样的,没有问题。

有同学可能要问了,之前折腾大象的for语句的代码块里没有用到 i这个变量啊?对啊,Python也没规定必须得用啊!只要一大堆玩意里为每一个玩意都执行了一次代码,这个变量出不出场都没有影响。

在引言部分室长就强调了程序顺序的重要性,在之前的课程中也多次领略了不同顺序对程序执行结果的影响。同样,for循环也是有顺序问题的,如果我们把“一大堆玩意”调整调整顺序:

那么for循环的顺序也随之更改。可见,列表虽然只是盛放一大堆元素的容器,但是还是有顺序的。

更多的时候我们往往不知道具体需要循环多少次,或者我们可能知道但实在懒得去数,怎么办?

举个例子,我们成为了动物园管理员,晚上下班以后要把所有动物装冰箱,那我们首先要拿到动物园的名单,再使用一个for循环:

看,动物已经全部被装进冰箱了,而这个过程中我们并没有去数多少个动物。

此外使用列表的好处是即便列表有了变化(比如孙越去动物园当动物了)也不会影响循环的结构。

这一期我们初步了解了for循环语句的使用,for语句往往适用于有限次循环(此处的有限次是指知道多少次,比如把大象关5次冰箱,或者能知道多少次,比如把名单上的动物都装完就完事),但有些情况我们不知道需要循环多少次,只知道做到哪种程度就可以不做了。Python同样为这种情况设计了语句。请关注下一期:只要学不死,就往死里学|while 循环和逻辑运算。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值