要实现“重复、自动地执行代码”,有两种循环语句可供我们选择使用:一种是for…in…循环语句,另一种是while循环语句。

for…in…循环语句

使用案例

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

L-5-33-2019191984.png

L-5-27-20191919623.png
L-5-34-20191919825.png

  1. dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}
  2. for i in dict:
  3. print(i)
  4. #打印出结果
  5. 日本
  6. 英国
  7. 法国
  1. a = '100'
  2. b = '0.01'
  3. for i in a:
  4. print(i)
  5. for i in b:
  6. print(i)
  7. #1
  8. 0
  9. 0
  10. 0
  11. .
  12. 0
  13. 1

学for之前

  1. d={'小明':'醋','小红':'油','小白':'盐','小张':'米'}
  2. print(d['小明'])
  3. print(d['小红'])
  4. print(d['小白'])
  5. print(d['小张'])

学for之后

  1. d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}
  2. for i in d:
  3. print(d[i])
  4. #醋
  5. #油
  6. #盐
  7. #米

range() 函数

使用range(x)函数,就可以生成一个从0到x-1的整数序列。

  1. for i in range(3):
  2. print(i)
  3. #0
  4. #1
  5. #2
  6. for i in range(3):
  7. print('我很棒')
  8. #我很棒
  9. #我很棒
  10. #我很棒
  11. for i in range(11):
  12. print('书桓走的第'+str(i)+'天,想他')
  13. 书桓走的第0天,想他
  14. 书桓走的第1天,想他
  15. 书桓走的第2天,想他
  16. 书桓走的第3天,想他
  17. 书桓走的第4天,想他
  18. 书桓走的第5天,想他
  19. 书桓走的第6天,想他
  20. 书桓走的第7天,想他
  21. 书桓走的第8天,想他
  22. 书桓走的第9天,想他
  23. 书桓走的第10天,想他

使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列。

  1. for i in range(13,17):
  2. print(i)
  3. #13
  4. #14
  5. #15
  6. #16

这里range(0,10,3)的意思是:从0数到9(取头不取尾),数数的间隔为3。

  1. for i in range(0,10,3):
  2. print(i)
  3. #0
  4. #3
  5. #6
  6. #9

L-5-32-20191919735.png
用for循环完成1到100的整数分别乘以5的计算,并打印出来,效果就像这样:

  1. # 用for循环完成1-100分别乘以5的计算
  2. for i in range(1,101):
  3. print(i*5)
  4. #5
  5. #10
  6. #15
  7. #20
  8. #……(中间过程省略)
  9. #490
  10. #495
  11. #500

while 循环语句

L-5-43-2019124144055.png

  1. a = 0 #先定义变量a,并赋值
  2. while a < 5: #设定一个放行条件:a要小于5,才能办事
  3. a = a + 1 # 满足条件时,就办事:将a+1
  4. print(a) # 继续办事:将a+1的结果打印出来
  5. #1
  6. #2
  7. #3
  8. #4
  9. #5

和for循环语句不同,while语句没有“空房间”,也不是“把一群排队办业务的人做完”。
它是“在一定的条件下”,“按照流程办事”。

while在英文中表示“当”,while后面跟的是一个条件。当条件被满足时,就会循环执行while内部的代码(while子句)。

所以while循环本质上像是一个哨卡:只要事情符合条件,那就一遍又一遍的“按流程办事”。

就像在上面的例题中,只要a<5这个条件成立,就不停地办事(把a+1的结果打印出来),直到条件不成立,办事流程就停止。
L-5G-38-20191101577.png
密码门方式

  1. password = '' # 变量password用来保存输入的密码
  2. while password!='816':
  3. password=input('尝试输入密码:')
  4. print('欢迎回家!')

注意事项

  1. # 之前的例题
  2. a = 0
  3. while a < 5:
  4. a = a + 1
  5. print(a)
  6. # 本题
  7. a = 0
  8. while a < 5:
  9. a = a + 1
  10. print(a)

有缩进的时候,print(a)也是循环中的“办事流程”,会将数字逐一打印。没有缩进的时候,循环中的“办事流程”就只有做加法,print(a)也就只会打印循环结束时的最后一个数字。
L-5-39-201919191039.png
我们用for循环解过“1到100分别乘以5”的题目:

  1. for i in range(1,101):
  2. print(i*5)
  3. # 1
  4. # 2
  5. ...
  6. #100

如果现在用while循环,应该怎么写呢?你来试试看。

  1. a=0
  2. while a<100:
  3. a=a+1
  4. print(a*5)
  5. # 1
  6. # 2
  7. ...
  8. #500

两种循环对比

for循环和whlie循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。

所以说,当我们【工作量确定】的时候,我们就可以让for循环来完成重复性工作。反之,要【工作量不确定时】可以让while循环来工作:

  1. #用for循环把诗句打印3遍
  2. for i in range(1,4) :
  3. print('明日复明日,明日何其多。')
  4. #用while循环把诗句打印3遍
  5. j = 1
  6. while j<4 :
  7. print ('明日何其多,明日何其多。')
  8. j =j+1

你会看到,两者都能做。不过for循环的代码相对更简洁一些。
L-5-40-20191919121.png

进阶

打印1-7,但是不要4

  1. #查看注释,运行代码。
  2. # while 循环
  3. n = 0
  4. while n < 7:
  5. n = n+1
  6. if n != 4: # 当num != 4,执行打印语句;等于4时不打印。
  7. print(n)
  8. # for 循环
  9. for num in range(1,8): # 为同时能运行两个循环,新取参数 num。
  10. if num != 4: # 当num != 4,执行打印语句;等于4时不打印。
  11. print(num)
  12. #1
  13. #2
  14. #3
  15. #5
  16. #6
  17. #7