要实现“重复、自动地执行代码”,有两种循环语句可供我们选择使用:一种是for…in…循环语句,另一种是while循环语句。
for…in…循环语句
使用案例
student = ['党志文', '浦欣然', '罗鸿朗', '姜信然', '居俊德', '宿鸿福', '张成和', '林景辉', '戴英华', '马鸿宝', '郑翰音', '厉和煦', '钟英纵', '卢信然', '任正真', '翟彭勃', '蒋华清', '双英朗', '金文柏', '饶永思', '堵宏盛', '濮嘉澍', '戈睿慈', '邰子默', '于斯年', '扈元驹', '厍良工', '甘锐泽', '姚兴怀', '殳英杰', '吴鸿福', '王永年', '宫锐泽', '黎兴发', '朱乐贤', '关乐童', '养永寿', '养承嗣', '贾康成', '韩修齐', '彭凯凯', '白天干', '瞿学义', '那同济', '衡星文', '公兴怀', '宫嘉熙', '牧乐邦', '温彭祖', '桂永怡']for i in student:print(i+'在不在?')#打印出结果xxx在不在?#...#xxx在不在?
for i in [1,2,3,4,5]:print(i)# 1# 2# 3# 4# 5#有一群数字在排队办业务,也就是列表[1,2,3,4,5]#它们中的每一个被叫到号的时候(for i in),就轮流进去一个空房间办业务#每一个数字进去房间之后,都对计算机说:“喂,我要办这个业务:帮忙把我自己打印出来”,也就是print(i)#然后计算机忠实的为每一个数字提供了打印服务,将1,2,3,4,5都打印在了屏幕上
for i in [1,2,3,4,5]:print(i*5)#5#10#15#20#25



dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}for i in dict:print(i)#打印出结果日本英国法国
a = '100'b = '0.01'for i in a:print(i)for i in b:print(i)#1000.01
学for之前
d={'小明':'醋','小红':'油','小白':'盐','小张':'米'}print(d['小明'])print(d['小红'])print(d['小白'])print(d['小张'])
学for之后
d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(d[i])#醋#油#盐#米
range() 函数
使用range(x)函数,就可以生成一个从0到x-1的整数序列。
for i in range(3):print(i)#0#1#2for i in range(3):print('我很棒')#我很棒#我很棒#我很棒for i in range(11):print('书桓走的第'+str(i)+'天,想他')书桓走的第0天,想他书桓走的第1天,想他书桓走的第2天,想他书桓走的第3天,想他书桓走的第4天,想他书桓走的第5天,想他书桓走的第6天,想他书桓走的第7天,想他书桓走的第8天,想他书桓走的第9天,想他书桓走的第10天,想他
使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列。
for i in range(13,17):print(i)#13#14#15#16
这里range(0,10,3)的意思是:从0数到9(取头不取尾),数数的间隔为3。
for i in range(0,10,3):print(i)#0#3#6#9

用for循环完成1到100的整数分别乘以5的计算,并打印出来,效果就像这样:
# 用for循环完成1-100分别乘以5的计算for i in range(1,101):print(i*5)#5#10#15#20#……(中间过程省略)#490#495#500
while 循环语句

a = 0 #先定义变量a,并赋值while a < 5: #设定一个放行条件:a要小于5,才能办事a = a + 1 # 满足条件时,就办事:将a+1print(a) # 继续办事:将a+1的结果打印出来#1#2#3#4#5
和for循环语句不同,while语句没有“空房间”,也不是“把一群排队办业务的人做完”。
它是“在一定的条件下”,“按照流程办事”。
while在英文中表示“当”,while后面跟的是一个条件。当条件被满足时,就会循环执行while内部的代码(while子句)。
所以while循环本质上像是一个哨卡:只要事情符合条件,那就一遍又一遍的“按流程办事”。
就像在上面的例题中,只要a<5这个条件成立,就不停地办事(把a+1的结果打印出来),直到条件不成立,办事流程就停止。
密码门方式
password = '' # 变量password用来保存输入的密码while password!='816':password=input('尝试输入密码:')print('欢迎回家!')
注意事项
# 之前的例题a = 0while a < 5:a = a + 1print(a)# 本题a = 0while a < 5:a = a + 1print(a)
有缩进的时候,print(a)也是循环中的“办事流程”,会将数字逐一打印。没有缩进的时候,循环中的“办事流程”就只有做加法,print(a)也就只会打印循环结束时的最后一个数字。
我们用for循环解过“1到100分别乘以5”的题目:
for i in range(1,101):print(i*5)# 1# 2...#100
如果现在用while循环,应该怎么写呢?你来试试看。
a=0while a<100:a=a+1print(a*5)# 1# 2...#500
两种循环对比
for循环和whlie循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。
所以说,当我们【工作量确定】的时候,我们就可以让for循环来完成重复性工作。反之,要【工作量不确定时】可以让while循环来工作:
#用for循环把诗句打印3遍for i in range(1,4) :print('明日复明日,明日何其多。')#用while循环把诗句打印3遍j = 1while j<4 :print ('明日何其多,明日何其多。')j =j+1
进阶
打印1-7,但是不要4
#查看注释,运行代码。# while 循环n = 0while n < 7:n = n+1if n != 4: # 当num != 4,执行打印语句;等于4时不打印。print(n)# for 循环for num in range(1,8): # 为同时能运行两个循环,新取参数 num。if num != 4: # 当num != 4,执行打印语句;等于4时不打印。print(num)#1#2#3#5#6#7
