for...in...循环语句
格式:
思考:还记得前一关里,班主任点名的例子吗?本来要重复50次才能完成的任务,最后变成了3行代码。
student = ['党志文', '浦欣然', '罗鸿朗', '姜信然', '居俊德', '宿鸿福', '张成和', '林景辉', '戴英华', '马鸿宝', '郑翰音', '厉和煦', '钟英纵', '卢信然', '任正真', '翟彭勃', '蒋华清', '双英朗', '金文柏', '饶永思', '堵宏盛', '濮嘉澍', '戈睿慈', '邰子默', '于斯年', '扈元驹', '厍良工', '甘锐泽', '姚兴怀', '殳英杰', '吴鸿福', '王永年', '宫锐泽', '黎兴发', '朱乐贤', '关乐童', '养永寿', '养承嗣', '贾康成', '韩修齐', '彭凯凯', '白天干', '瞿学义', '那同济', '衡星文', '公兴怀', '宫嘉熙', '牧乐邦', '温彭祖', '桂永怡']
for i in student:
print(i+'在不在?')
我们用大白话来打个比方,以便更好地理解这段代码的意义:
for循环的3个要点即是:1.空房间;2.一群等着办业务的人;3.业务流程
for循环:空房间
用i?因为英文是item,所以i是常用名嘛。但其实你给这个房间取什么名字都行。
在for循环结束之后,我们还能使用这个房间,不过这时候房间里的人是谁呢
for循环:一群排队办业务的人
有哪些数据类型也属于“一群排队办业务的人”呢?
列表和字典
字符串'abc'
整数、浮点数是不属于“一群排队办业务的人”
这个过程,在Python中的学名就叫做【遍历】。
range()函数
使用range(x)函数,就可以生成一个从0到x-1的整数序列(依然是左取右不取)
使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列。
使用情况:
如果你要重复打印“书桓走的第n天,想他”,n为0到10,你会怎么写?
range()步长
这里range(0,10,3)的意思是:从0数到9(取头不取尾),步长为3。
总结
实战:
用for循环完成1到100的整数分别乘以5的计算,并打印出来
for循环:办事流程
我们以下面的代码为例:
这两行代码中,in表示从“一群排队办业务的人”(字符串、列表、字典等)中依次取值,这个刚才我们已经学过了。
在循环的过程中,“一群排队办业务的人”会被依次取出,然后走进房间i去办理业务。
但办事流程呢?在这里流程很简单,都是print(i*5)。然后在i=1的情况下,执行一遍流程;在i=2的情况下,再执行一遍流程……一直执行到i=5,也就把这群人的事情全部办完了:
练习
假设你要做大采购,让小明买醋,小红买油,小白买盐,小张买米;我们先把这堆事情写成一个字典:d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}
如果我们把这四个人要买的东西依次print出来,要写4句print语句:
for循环代替以上重复性代码
while循环
格式:
样例解析:
和for循环语句不同,while语句没有“空房间”,也不是“把一群排队办业务的人做完”。它是“在一定的条件下”,“按照流程办事”。
while循环有2个要点:1.放行条件;2.办事流程。
while循环:放行条件
逻辑:
while后面跟的是一个条件。当条件被满足时,就会循环执行while内部的代码(while子句)
所以while循环本质上像是一个哨卡:只要事情符合条件,那就一遍又一遍的“按流程办事”。
上面的例题中,只要a<5这个条件成立,就不停地办事(把a+1的结果打印出来),直到条件不成立,办事流程就停止。
样例:
样例1
小说里的主角小龙女(古墓派掌门人)自小在终南山上的古墓里生活。这个门派有个规定,除非有男人愿意为掌门人死,否则掌门人永远不能出墓门半步。
样例2
你家的大门是密码门,密码是你的生日816。当输入密码错误的时候,会提示“请尝试输入密码:”。直到密码输入正确,就会提示“欢迎回家!”。
while循环:办事流程
这道题跟一开始的例题非常相似,唯一的区别在于print(a)有没有缩进。
有缩进的时候,print(a)也是循环中的“办事流程”,会将数字逐一打印。没有缩进的时候,循环中的“办事流程”就只有做加法,print(a)也就只会打印循环结束时的最后一个数字。
我们来做一下分解,看看每一行代码的含义:
练习:“1到100分别乘以5”的题目:
两种循环对比
for循环和while循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。(确定循环次数用for更加灵活,不确定工作次数用while)
例如:
要把字符串'神雕侠侣'拆成一个个字符打印出来,这件事【工作量确定】,适合用for循环。
而对于“输入密码,判断输入的密码是否正确”这件事,我们并不知道要判断几遍才能得到正确密码,所以【工作量不确定】,适合用while循环。
不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】
你会看到,两者都能做。不过for循环的代码相对更简洁一些。
让我们总结一下什么时候用for什么时候用while:
练习:
练习1:
小美想要用今天学到的循环打印数字1-7,不过,她不喜欢4这个数字……
请你用不同的循环方式来帮小美实现“打印1-7,但是不要4”这个愿望。
学完continue之后也可用这个方法:
练习2:
通过这个练习,你会尝试用循环来解决生活中的问题,并了解一种新的列表方法。
练习要求
小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。每次换座位的时候,第一位变第三位,后面两位都往前一位。
题目讲解
1.可结合循环和append()函数,让列表发生3次变化,每次都打印出来,如下:
可结合循环和append()函数,使用循环,让列表发生3次变化,每次都打印出来
2.我们先介绍一下列表中的pop()函数,用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
可以将其理解为提取和删除的融合:①提取:取到元素,对列表没有影响;②删除:删除列表的元素。
而移除,则是同时做到取到元素,并且删除列表中的元素。
代码答案
# For循环:
students = ['小明','小红','小刚']
for i in range(3):
# 获取第一个座位的学生 student1
student1 = students.pop(0)
# 将 student1 安排到最后一个座位
students.append(student1)
print(students)
# While循环:
students = ['小明','小红','小刚']
a=1
while a<=len(students) :
student1 = students[0]
# 获取第一个座位的学生 student1
students = students[1:]
# 让 student1 暂时离开,后面的学生座位都进一位。
students.append(student1)
# 将 student1 安排到最后一个座位
print(students)
a=a+1
补充:
循环四要素:
- 循环变量初始值
- 循环条件
- 循环体代码
- 让循环变量趋近于结束条件的代码
循环执行过程:
循环变量初始值->循环条件->循环体代码->让循环变量趋近于结束条件的代码->循环条件->循环体代码->让循环变量趋近于结束条件的代码->...循环条件(当不满足条件,退出循环)
发布者:LJH,转发请注明出处:https://www.ljh.cool/7617.html