9 循环和列表
列表不是课表哦
大纲
使用列表
列表的常见操作
练习:求量大值
练习:找到质数
练习:房间的灯光判断
练习:用循环进行推理
使用列表
在上节课中,我们使用range来生成了一个递增序列,并基于这个序列来完成了循环操作,来遍历整体序列。其实这种序列可以认为是一种列表或者数组,它是很多个元素放在一起,方便操作。我们来学习一种新的数据类型,就是列表(list)。
定义一个列表很简单,就是用一对中括号,把需要装进来的东西包住,里面的东西用逗号隔开。可以理解列表就是一排保险柜,柜子里头保存的是一堆分开保存的东西。
我们来使用列表来保存10以内的数字,然后找出哪些数字是偶数
用range也是一样的,不过用list会更加灵活一些。
列表的操作
可以对列表做很多的操作,这里先简单介绍三种最常用操作,也就是对列表做查询、修改和新增
查询是按序号位置查的,将序号放入方括号中,将对应位置的数字取出来,修改也可以按序号来,直接用等号进行重新赋值,新增介绍的是从尾部补充进去,使用点号加append,括号中是要新增的数字,要注意的是,列表的序号是从0开始的。
让我们把之前的代码改一下,把20以内的偶数都找出来,并存到列表中。
上例中,先定义了一个空的列表numbers_even,这个是为了后面保存偶数列表用的,之后准备循环遍历,从0到19,对每个元素进行判断,如果是偶数,就将它添加到numbers_even尾部,最后打印出numbers_even观察,没问题。
这是另一种作法,如果不符合条件,则使用continue来跳过循环体中剩余的代码,直接进入下一次循环。
练习:求最大值
编写一个程序,输入N个数字,输出最大值出来。我们之前的时候学习过如何找到最小值,这次,我们用列表来存放输入的数字,用循环来来找到这个最大值。
练习:寻找质数
输入一个数字,判断它是不是质数
只要有第一个数字i发现可以整除数字x,x就可以认为不是质数,所以后面的循环部分可以不用运行,节约时间。
练习:房间的灯光问题
一个房间里有20盏灯,编号从1到20,第1个人进来把所有灯打开,第2个人再进来把所有编号为2的倍数的灯关掉,第3个人再进来,把所有编号为3的倍数的灯打开,依此类推,如果有5个人进来过,最后有哪几盏灯还开着?
我们分两步来解决这个问题,第一步先用一个列表把20个灯定义好,然后第一个人进来,把每个灯都打开,就用1表示打开,0表示关闭,那么就是把这个列表中的20个元素都修改成1就可以了。
第二步是从第二个人开始循环,这里先从不同的人开始循环,再循环不同的灯,所以是有一个双重循环,如果这个灯的序号能够被人的序号整除,我们就把灯的状态进行修改。这里要注意两个要点,一个是用第三行是用了number+1,因为range从0开始编号的,而题目中灯的编号从1开始的,所以需要+1,第二个是在第四行我们修改灯的状态时,lights[number]=1-lights[number],兼容了开灯和关灯两个动作,如果原来是1,用1-1可以变成0,如果原来是0,用1-0可以变成1.
练习:用循环进行推理
A, B, C, D这四个人中有一个人是小偷,已经知道其中有一个人说了假话,请根据他们的供词来判断谁是小偷。
A:我不是小偷
B:C是小偷
C:D是小偷
D:我不是小偷
用0到3的数字来代表四个人的编号,用变量i代表小偷的编号,那么上面这四句话的含义就可以翻译成四行代码。
A: i!=0
B: i==2
C: i==3
D: i!=3
可以看到输出的编号是2,也就是说小偷的编号是2,也就是C是小偷。
Last updated
Was this helpful?