高一上册信息技术 周而复始的循环-计数循环 逐字稿-5,181字
师:同学们大家好,不知道大家有没有玩过《植物大战僵尸》这个游戏?很多同学都说玩过,对吧?在《植物大战僵尸》游戏中,我们都希望植物能快点长大,这样就能抵御更多攻击。有人发现了这个商机,开始出售特效增高药。小怪兽知道这个消息后非常兴奋,打算去买特效增高药。小怪兽现在身高是155厘米,如果特效增高药每吃一颗能增长0.015倍,小怪兽买5颗后,身高会是多少呢?同学们能帮它算出来吗?
生:老师,这个题目很简单,我来算给您看。
师:好呀,我们已知小怪兽身高155厘米,吃完第一颗药后,身高等于155乘以(1 + 0.015)。吃完第二颗药后,身高等于吃完第一颗药后的身高乘以(1 + 0.015)。吃完第三颗药后,身高等于吃完第二颗药后的身高乘以(1 + 0.015)。吃完第四颗药后,身高等于吃完第三颗药后的身高乘以(1 + 0.015)。吃完第五颗药后,身高等于吃完第四颗药后的身高乘以(1 + 0.015)。大家有没有发现,老师一直在重复 “会等于当前身高乘以(1 + 0.015)” 这句话,是不是在不断重复同一个动作?像这样不断重复同一个动作的过程,我们称之为循环,指计算机程序周而复始重复同样的步骤。我们用前面学过的流程图来表示这个过程。首先,在判断条件里用 “棵数小于等于5”,用来判断要重复5次。那重复里面做什么呢?就是当前身高乘以(1 + 0.015)。像这样的结构,我们称之为循环结构,它和前面的顺序结构、分支结构一样,都是计算机程序的基本结构。
循环结构主要包含两部分,第一部分叫循环体,第二部分叫循环控制条件。循环体是循环中不断重复做的事情,循环控制条件用来判断循环要执行多少次。在小怪兽买药这个算法中,小怪兽买了5颗药,我们提前知道循环要执行5次,像这种已知循环次数的循环,我们叫计数循环。今天这节课,我们就一起来学习什么是计数循环,以及如何实现计数循环。计数循环的关键字是 “for 循环变量 in 列表”,冒号后面代表循环体。这里老师用一个语句块描述了 “循环变量 in 列表”,它是循环控制条件,用来控制循环执行次数。大家尝试用计数循环表示小怪兽吃5颗特效增高药的算法,老师已经表示出来了。首先,循环控制条件老师用了 “i in range(0, 5)”。有的同学可能会说不知道这是什么意思,没关系,我们先不用了解,只要知道这个循环控制条件能控制循环执行5次就行。这5次里,每次循环体执行的是:身高会等于当前身高乘以(1 + 0.015)。根据这个算法流程图,大家能写出程序吗?试试看。关键在于 “for” 后面是循环控制条件,注意冒号表示后面跟着的是循环体。在这个程序里,循环体只有一句,就是身高增长。大家有没有发现,身高增长这句语句和 “for” 语句之间有个缩进。这里要特别强调,缩进在程序里是必须的,它表示缩进去的语句属于循环体。因为在Python中,我们根据语句的缩进来判断它隶属于哪一块。
了解了用 “for 循环” 即计数循环来计算小怪兽吃完5颗药后的身高问题后,有同学说:“老师,我还是不明白为什么 ‘i in range(0, 5)’ 能代表循环5次?” 这里就涉及到一个新知识 —— 列表。先看红色的 “range” 语句,“range” 是一个函数,这个函数可以产生一个列表。“range(0, 5)” 产生的列表是0、1、2、3、4,包含5个元素。由此可见,它起始位置是0,结束位置写5的话,产生的集合是左闭右开,所以是0到4这五个数。“for i in” 这样一个集合,代表将集合中的数依次取到变量 “i” 中。集合有5个元素,将这5个元素依次取到变量 “i” 中,就代表要取5次,所以循环会执行5次。我们来看列表的定义,刚刚说的几个集合实际上就称为列表。什么是列表呢?列表是一种数据类型。创建列表时,用逗号分隔不同数据项,再用方括号括起来就行,很简单。
老师给大家看几个列表,第一个 “list1 = [2, 3, 4, 5]”,里面都是整型。第二个 “list2 = ['a', 'b', 'c', 'd']”,里面都是字符串。再看 “LIST3”,里面既有字符也有整型。这说明列表的数据类型定义很宽松,在列表中允许元素类型不一致。讲了列表的基本定义后,我们要知道,列表作为一种数据类型,Python系统给它定义了一些常用操作方法和基本运算。我们先来看系统给列表定义的基本操作方法,这些方法能帮助我们以后编写程序。我们以一个例子看看这些基本操作方法在程序中怎么运用。
要求输入5个数,完成以下操作:首先在列表中输入5个数,然后在列表尾部插入数15,这是第一个要求。第二个要求是按次序逆序输出。第三个要求是按从小到大的顺序输出。假设输入是4、5、9、7、0这五个数。大家想想,完成前面3个操作后,列表值分别是什么?思考一下运算过程。插入15后,列表会变成 [4, 5, 9, 7, 0, 15]。逆序输出后,15变成第一个元素,即 [15, 0, 7, 9, 5, 4]。按从小到大顺序输出,是不是就是 [0, 4, 5, 7, 9, 15] ?老师给出了一个程序大体框架,大家能不能用刚刚学过的列表基本操作方法实现这个程序呢?先看红色部分,这里空了一行,要求将元素 “x” 增加到列表最后,可以用哪个方法呢?对,“append”。可以直接 “list.append(15)”,“list” 前面是对象,后面跟着方法,这样就将15插入到列表了。第二个部分,满足第二个条件,将列表元素反转,用到的方法是什么?非常好,是 “reverse”。第三个,希望列表从小到大排序,用到的是 “list.sort” 方法。其他方法大家课后再认真学习。刚刚讲的都是单个列表的操作方法,如果是两个或两个以上列表,系统同样为它们定义了一些基本运算,我们来看一下。首先,可以直接用 “+” 连接两个列表。也可以对列表进行整数次重复,还能索引列表中的元素,要注意列表元素排序从0开始。同样可以用 “len” 函数求列表元素个数。最后,通过指定位置,可以取列表中从第几位到第几位的序列,即取列表中的子序列。我们用几个简单例子帮助大家理解列表的基本运算怎么操作。假设列表是从0到4这5个元素,如果运算 “list * 2”,大家觉得得到的列表是什么?它代表列表进行整数次重复,重复两次,所以会变成 [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]。