一、for…in…循环,它也被简称为for循环
先来下图中的示例代码:
for i in [1,2,3,4,5]: #i是“空房间”
print(i)
运行结果:
1
2
3
4
5
终端上依次出现了列表里的所有数字,对吧?我们用大白话来打个比方,以便更好地理解这段代码的意义:
#有一群数字在排队办业务,也就是列表[1,2,3,4,5]
#它们中的每一个被叫到号的时候(for i in),就轮流进去一个空房间办业务
#每一个数字进去房间之后,都对计算机说:“喂,我要办这个业务:帮忙把我自己打印出来”,也就是print(i)
#然后计算机忠实的为每一个数字提供了打印服务,将1,2,3,4,5都打印在了屏幕上
空房间的学名叫【元素】(item),你可以把它当成是一个变量。那么首先,我们需要给房间取一个名字,也就是“变量名”
为什么总是用i?因为英文是item,所以i是常用名嘛。但其实你给这个房间取什么名字都行
刚刚看到的“一群排队办业务的人”,都是以列表的形式出现:[1,2,3,4,5],还有一种是就是字典
dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}
for i in dict:
print(i)
#运行结果:
日本
英国
法国
print(i)把“空房间”i打印了出来,发现i会逐个接待字典中的每一个【键】
range()函数
for i in range(3):
print(i)
运行结果:
0
1
2
运行后,你看到了整数0,1,2,是不是?使用range(x)函数,就可以生成一个从0到x-1的整数序列
for i in range(13,17):
print(i)
运行结果:
13
14
15
16
使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列
range()函数还有一种用法,直接来体验下
for i in range(0,10,3):
print(i)
运行结果:
0
3
6
9
你观察出规律了么?这里range(0,10,3)的意思是:从0数到9(取头不取尾),数数的间隔为3
假设你要做大采购,让小明买醋,小红买油,小白买盐,小张买米;我们先把这堆事情写成一个字典:d = {‘小明’:‘醋’,‘小红’:‘油’,‘小白’:‘盐’,‘小张’:‘米’ }
如果我们把这四个人要买的东西依次print出来,要写4句print语句,看下例
d={'小明':'醋','小红':'油','小白':'盐','小张':'米'}
print(d['小明']) #打印出 醋
print(d['小红']) #打印出 油
print(d['小白']) #打印出 盐
print(d['小张']) #打印出 米
使用for循环代替以上重复代码:
d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}
for ha in d:
print(d[ha])
运行结果:
醋
油
盐
米
while循环
先来看看while循环长啥样
a = 0 #先定义变量a,并赋值
while a < 5: #设定一个放行条件:a要小于5,才能办事
a = a + 1 # 满足条件时,就办事:将a+1
print(a) # 继续办事:将a+1的结果打印出来
运行结果:
1
2
3
4
5
和for循环语句不同,while语句没有“空房间”,也不是“把一群排队办业务的人做完”。它是“在一定的条件下”,“按照流程办事”
很明显,while循环有2个要点:1.放行条件;2.办事流程。咱们先看第一个
while循环:放行条件
while在英文中表示“当”,while后面跟的是一个条件。当条件被满足时,就会循环执行while内部的代码(while子句)
所以while循环本质上像是一个哨卡:只要事情符合条件,那就一遍又一遍的“按流程办事”
就像在上面的例题中,只要a<5这个条件成立,就不停地办事(把a+1的结果打印出来),直到条件不成立,办事流程就停止
来个案例说明:
你家的大门是密码门,密码是你的生日816。当输入密码错误的时候,会提示“请尝试输入密码:”。直到密码输入正确,就会提示“欢迎回家!”
password = ' ' # 变量password用来保存输入的密码
while password != '816': #当密码不等于816时,就一直循环
password=input('请尝试输入密码:')
print('欢迎回家!')
两种循环对比
for循环和whlie循环最大的区别在于【循环的工作量是否确定】,
for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。
但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡
所以说,当我们【工作量确定】的时候,我们就可以让for循环来完成重复性工作。
反之,要【工作量不确定时】可以让while循环来工作
来个练习题
小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。
由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。
每次换座位的时候,第一位变第三位,后面两位都往前一位。
students = ['小明','小红','小刚']
for i in range(3):
student1 = students.pop(0) # 运用pop()函数,同时完成提取和删除。
students.append(student1) # 将移除的student1安排到最后一个座位。
print(students)
运行结果:
['小红', '小刚', '小明']
['小刚', '小明', '小红']
['小明', '小红', '小刚']