循环语句

让计算机重复且自动执行代码

  • for…in…循环语句
  • while循环语句

for…in…循环:空房间

for i in [1,2,3,4,5]:  #i是“空房间”
   print(i)

其中,空房间的名字i是item(元素)的意思,其实取什么名字都行。

那么,空房间外"等待办业务的人",是以列表的形式出现的,如果是字典呢?

dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}

for i in dict:
    print(i)
日本
英国
法国

我们用print(i)把“空房间”i打印了出来,发现i会逐个接待字典中的每一个【键】。
字典,列表,字符串都可以。不要怀疑,字符串也属于“一群排队办业务的人”。打个比方,'吴承恩’三个字就像一家三口,但走进空房间办业务时,这家人是可以一个一个进去的。来试试吧。

for i in '吴承恩':
    print(i)
吴
承
恩

1,2,3,4,5依次出现。也就是说,当这一群排队的人依次序走进空房间,每个人都会把业务办完。

这个过程,在Python中的学名就叫做【遍历】。

除了列表,字典,字符串三种数据类型,我们还可以遍历其他的数据集合。比如和for循环常常一起搭配使用的:range() 函数。

range()函数

for i in range(3):
    print(i)
0
1
2

使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列。
我没事儿取这些整数出来干嘛?嗯,这是个好问题。再来看一段代码,并运行:

for i in range(3):
    print('我很棒')
我很棒
我很棒
我很棒

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

for i in range(11):
    print('书桓走的第'+str(i)+'天,想他')
书桓走的第0天,想他
书桓走的第1天,想他
书桓走的第2天,想他
书桓走的第3天,想他
书桓走的第4天,想他
书桓走的第5天,想他
书桓走的第6天,想他
书桓走的第7天,想他
书桓走的第8天,想他
书桓走的第9天,想他
书桓走的第10天,想他

range()函数还有一种用法:

for i in range(0,10,3):
    print(i)
0
3
6
9

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

python怎么每一秒循环输出一句话_字符串


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

for i in range(1,101):
    print(i*5)
d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}

for i in d:
    print(d[i])
醋
油
盐
米

while循环

我们用for循环解过“1到100分别乘以5”的题目:

for i in range(1,101):
    print(i*5)

如果现在用while循环,应该怎么写呢?

n = 1
while n < 101:
    n = n + 1
    print(n*5)
10
15
20
25
30
...
470
475
480
485
490
495
500
505

有点不太对,改一下:

i = 1
while i<101 :
    print (i*5)
    i = i+1
5
10
15
20
25
30
35
...
485
490
495
500

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

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

# 适合用for...in...循环
for i in '神雕侠侣':
     print(i)

 # 适合用while循环
password = ''
while password != '816':
     password = input('请尝试输入密码:')```

不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】:

```python
#用for循环把诗句打印3遍
for i in range(1,4) :
    print('明日复明日,明日何其多。')

#用while循环把诗句打印3遍
j = 1
while j<4 :
    print ('明日何其多,明日何其多。')
    j =j+1

python怎么每一秒循环输出一句话_while循环_02

练习

打印数字1-7,跳过4。分别用两种循环实现(判断)。

#查看注释,运行代码。

# while 循环
n = 0
while n < 7:
    n = n+1
    if n != 4:  # 当num != 4,执行打印语句;等于4时不打印。
        print(n)

# for 循环
for num in range(1,8):  # 为同时能运行两个循环,新取参数 num。
    if num != 4:  # 当num != 4,执行打印语句;等于4时不打印。
        print(num)

终极练习:
练习要求
小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。
由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。
每次换座位的时候,第一位变第三位,后面两位都往前一位。

法1:

students = ['小明','小红','小刚']
for i in range(1,4):
    students.append(str(students[0]))
    del(students[0])
    print(students)


# 参考答案(不用del())
students = ['小明','小红','小刚']
for i in range(3):
    student1 = students[0]  # 获取第一个座位的学生 student1
    students = students[1:]  # 让 student1 暂时离开,后面的学生座位都进一位。
    students.append(student1)  # 将 student1 安排到最后一个座位
    print(students)
['小红', '小刚', '小明']
['小刚', '小明', '小红']
['小明', '小红', '小刚']# 答案是一样的

法2(利用pop()函数):

print('提取只取不删:')
list1 = ['0','1','2','3']
print(list1[3])
print(list1)

print('\n删除(del)只删不取:' )
list1 = ['0','1','2','3']
del list1[3]
print(list1)

print('\n移除(pop)又取又删:')
list1 = ['0','1','2','3']
print(list1.pop())  # 默认删除最后一个元素,并返回该元素的值。
print(list1)
print(list1.pop(0))  # 也可指定删除某个元素,并返回该元素的值。
print(list1)

students = ['小明','小红','小刚']
students = ['小明','小红','小刚']
for i in range(3):
    student1 = students.pop(0)  # 运用pop()函数,同时完成提取和删除。
    students.append(student1)  # 将移除的student1安排到最后一个座位。
    print(students)