开始

image.png

for…in…循环语句

image.png

例:
  1. for i in [1,2,3,4,5]:
  2. print(i)
  3. #有一群数字在排队办业务,也就是列表[1,2,3,4,5]
  4. #它们中的每一个被叫到号的时候(for i in),就轮流进去一个空房间办业务
  5. #每一个数字进去房间之后,都对计算机说:“喂,我要办这个业务:帮忙把我自己打印出来”,也就是print(i)
  6. #然后计算机忠实的为每一个数字提供了打印服务,将1,2,3,4,5都打印在了屏幕上

for循环:空房间

空房间的学名叫【元素】(item),你可以把它当成是一个变量。那么首先,我们需要给房间取一个名字,也就是“变量名”。

例:
  1. for i in [1,2]:
  2. print(i)
  3. for number in [1,2]:
  4. print(number)
  5. for LOVE in [1,2]:
  6. print(LOVE)

例:在for循环结束之后,我们还能使用这个房间,不过这时候房间里的人是谁呢?
  1. for i in [1,2,3,4,5]:
  2. print(i)
  3. print('事情全部办完了!现在留在空房间里的人是谁?')
  4. print(i)
  5. #结果
  6. 1
  7. 2
  8. 3
  9. 4
  10. 5
  11. 事情全部办完了!现在留在空房间里的人是谁?
  12. 5

for循环:一群排队办业务的人

例:
  1. dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}
  2. for i in dict:
  3. print(i)
  4. #结果:
  5. 日本
  6. 英国
  7. 法国

例:字符串
  1. for i in '吴承恩':
  2. print(i)
  3. #结果:

range()函数

例:
  1. # 请直接运行代码
  2. for i in range(3):
  3. print(i)
  4. #结果
  5. 0
  6. 1
  7. 2

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

有了range()函数之后,当你想把一段代码固定重复n次时,就可以直接使用for i in range(n)解决问题。

例:
  1. for i in range(3):
  2. print('我很棒')
  3. #结果
  4. 我很棒
  5. 我很棒
  6. 我很棒

例:如果你要重复打印“书桓走的第n天,想他”,n为0到10,你会怎么写?
  1. for i in range(11):
  2. print('书恒走的第'+str(i)+'天,想他')

例:range(0,10,3)的意思是:从0数到9(取头不取尾),数数的间隔为3
  1. for i in range(0,10,3):
  2. print(i)
  3. #结果:
  4. 0
  5. 3
  6. 6
  7. 9

image.png

例:用for循环完成1到100的整数分别乘以5的计算,并打印出来
  1. # 用for循环完成1-100分别乘以5的计算
  2. for i in range(1,101):
  3. print(i*5)

for循环:办事流程

image.png

image.png

例:假设你要做大采购,让小明买醋,小红买油,小白买盐,小张买米;我们先把这堆事情写成一个字典:d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'},如果我们把这四个人要买的东西依次print出来,要写4句print语句:
  1. d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}
  2. for i in d:
  3. print(d[i])
  4. #结果:

while循环

image.png

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

image.png

while循环:放行条件

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

例:小龙女(古墓派掌门人)自小在终南山上的古墓里生活。这个门派有个规定,除非有男人愿意为掌门人死,否则掌门人永远不能出墓门半步。
  1. man = '' # 注:这个''代表空字符串
  2. while man != '有':
  3. man = input('有没有愿意为小龙女死的男人?没有的话就不能出古墓。')
  4. print('小龙女可以出古墓门下山啦~')

例:你家的大门是密码门,密码是你的生日816。当输入密码错误的时候,会提示“请尝试输入密码:”。直到密码输入正确,就会提示“欢迎回家!”。
  1. password = '' # 变量password用来保存输入的密码
  2. while password != '816':
  3. password = input('请尝试输入密码:')
  4. print('欢迎回家!')

while循环:办事流程

例:1到100分别乘以5
  1. i = 1
  2. while i<101 :
  3. print (i*5)
  4. i = i+1

两种循环对比

for循环和while循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。
  1. # 适合用for...in...循环
  2. for i in '神雕侠侣':
  3. print(i)
  4. # 适合用while循环
  5. password = ''
  6. while password != '816':
  7. password = input('请尝试输入密码:')

例:把一件事情做N遍
  1. # 直接运行代码即可
  2. #用for循环把诗句打印3遍
  3. for i in range(1,4) :
  4. print('明日复明日,明日何其多。')
  5. #用while循环把诗句打印3遍
  6. j = 1
  7. while j<4 :
  8. print ('明日何其多,明日何其多。')
  9. j =j+1

练习:

打印1-7,但是不打印4
  1. # while 循环
  2. n = 0
  3. while n < 7:
  4. n = n+1
  5. if n != 4: # 当num != 4,执行打印语句;等于4时不打印。
  6. print(n)
  7. # for 循环
  8. for num in range(1,8): # 为同时能运行两个循环,新取参数 num。
  9. if num != 4: # 当num != 4,执行打印语句;等于4时不打印。
  10. print(num)

小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。每次换座位的时候,第一位变第三位,后面两位都往前一位。
  1. students = ['小明','小红','小刚']
  2. for i in range(3):
  3. student1 = students[0] # 获取第一个座位的学生 student1
  4. students = students[1:] # 让 student1 暂时离开,后面的学生座位都进一位。
  5. students.append(student1) # 将 student1 安排到最后一个座位
  6. print(students)
  1. students = ['小明','小红','小刚']
  2. for i in range(3):
  3. student1 = students.pop(0) # 运用pop()函数,同时完成提取和删除。
  4. students.append(student1) # 将移除的student1安排到最后一个座位。
  5. print(students)
  1. print('提取只取不删:')
  2. list1 = ['0','1','2','3']
  3. print(list1[3])
  4. print(list1)
  5. print('\n删除(del)只删不取:' )
  6. list1 = ['0','1','2','3']
  7. del list1[3]
  8. print(list1)
  9. print('\n移除(pop)又取又删:')
  10. list1 = ['0','1','2','3']
  11. print(list1.pop()) # 默认删除最后一个元素,并返回该元素的值。
  12. print(list1)
  13. print(list1.pop(0)) # 也可指定删除某个元素,并返回该元素的值。
  14. print(list1)
  15. #结果
  16. 提取只取不删:
  17. 3
  18. ['0', '1', '2', '3']
  19. 删除(del)只删不取:
  20. ['0', '1', '2']
  21. 移除(pop)又取又删:
  22. 3
  23. ['0', '1', '2']
  24. 0
  25. ['1', '2']