for循环回顾
学习了如何利用for语句实现代码重复执行的循环结构。
通过遍历列表,输出其中的每一个元素。
for循环就像是排队办事,一个个进入,轮流办理,每个人经历的流程都一样。
在for循环,一次遍历就是一次循环,因此我们知道会经历过几次循环。
在另一种情况下,我们并不关心循环几次,只在意循环什么时候结束。
这样的循环逻辑,就对应Python中的条件循环(也叫while循环)。
条件循环
条件循环,又称while循环,以判断条件是否成立,来决定是否执行循环内的代码。
当判断为真时,代码会循环执行,当判断为假时则终止循环。
while循环中,有一个判断条件,来决定是否执行循环内的代码。
判断为True,则继续执行循环;
判断为False,就会中止循环。
这样的判断条件,我们称为------边界条件。
边界条件
while循环的边界条件,是指终止循环的那个判断条件。
边界条件为False,则中止循环。
(隐喻:跑圈的时候,条件为小于10圈就一直跑。直到跑到10圈,教练吹哨,就停止跑圈。)
理解了while循环的概念,来看看代码的语法格式。
同样是输出一个列表里面的所有元素,如何使用while循环来完成
while循环
nameList = ["Max","Tom","Jim","Ken","Kim"]
counter = 0
while counter < 5:
print(nameList[counter])
counter = counter + 1
代码的作用
这5行代码使用了while循环把列表的元素全部输出出来。
第3行使用while循环,判断Counter是否小于5。若是,就进入循环;若不是,程序就终止。
第4行,条件为True时,输出列表nameList中索引为Counter的元素;
第5行,在条件为True时,用Counter计数,继续回到第3行代码,不断循环,直到while循环判断为False,程序结束。
counter初始化
变量counter赋值0,进行初始化。
while
使用关键词while,表明我们要在这里开始执行"while循环"的代码结构。
边界条件
边界条件,如果该条件成立(True=真),就执行下面的缩进代码;
如果该条件不成立(False=假),就终止循环。
英文冒号:
一个冒号,循环语句的固定格式,表明接下来缩进的代码块,在每次边界条件为True的时候,都要执行。
四个空格
四个空格,循环缩进的固定格式,表明同样缩进的代码在每次边界条件为True的时候,都要执行。
循环内代码
缩进后的代码,是一个代码块,是循环中要执行的部分。
(while循环运行流程)
while标志着开始进入条件循环,判断这时的counter是否小于5,由于上面定义了counter初始化赋值为0,小于5满足条件,因此进入循环
在第一次循环中,输出了列表索引为0的元素Max
然后counter + 1 ,重新赋值给counter,也就是0+1 变为1
重新又判断一次,此时的counter是否小于5,由于counter刚刚修改为1,小于5满足条件,依旧进入循环,输出
列表索引为1的元素Tom
然后counter +1 重新赋值给counter,就变成了1+1 变为 2
重新又一次进行判断,满足条件后,继续进入循环,输出此时索引是counter的元素 Jim
然后counter + 1,再一次进入判断看是否满足条件
直到counter +1 之后,值变为5,进行判断时,5 < 5 不成立,返回False,就终止了这个循环,这就是while循环过程。
代码小结
通过如下格式在代码中使用while循环
小练习
(一)
sum= 0
counter= 0
while counter < 5:
sum = sum + counter
counter = counter + 1
print(sum)
一段累加代码,输出的结果依次是0 1 3 6 10
sum是累加器,counter是计数器,都初始化为0,
然后进入while循环,sum和counter的值相加赋值给sum,
counter+1,输出sum的值,本次循环结束,进入下一循环。
直到counter小于5不成立,循环结束。
(二)
sum= 0
counter= 0
while counter < 5:
sum = sum + counter
counter = counter + 1
print(sum)
和上一段代码唯一不同之处在于print()语句所在的位置不一样。
上一段,在循环中输出,所以循环进行五次,就输出了五个值。
而本段代码中,print()在while循环之外,并且和while循环处于同一层级,循环结束以后才会执行print,输出最终的值。
(三)
sum= 0
counter= 0
while counter < 5:
counter = counter + 1
sum = sum + counter
print(sum)
本段(三)和上段(二)的不同之处,在于累加器sum和计数器counter的位置。
本段代码中,counter先+1,sum再被赋值,所以在每一次循环中,counter都是先+1以后再与sum累加计算的,
当循环执行到第五次的时候,counter等于4,进入循环以后,counter自增等于5 ,sum等于15(1+2+3+4+5),不满足条件,循环结束,
输出sum的值为15。
for循环是有天然的边界条件------完成遍历。
但while循环是有可能一直运行的。只要边界条件为真,它就会一直执行下去。
比如图中代码就会永远执行,这种循环我们又叫做"死循环"。
死循环
死循环是一种循环类型, 当一个循环永远无法终止的时候,我们就说它是一个死循环。
死循环会一直运行下去。
如图,由于边界条件永远为True,因此,循环会一直进行下去,永远不会停止。
一般来说"死循环"是一个bug,它会导致程序一直无意义运行,我们在写代码的时候一定要尽量去避免。
图中,我们修改一下之前的代码,就不会进入死循环了。因为在执行完print()以后我们给tag变量赋值了False,此时while的判断条件为False,循环就结束了。
for循环和while循环区别
总结一下,从代码的执行结果来看,for循环和while循环,都可以实现相同的功能。
但他们的区别在哪呢?
第一个区别:
for循环 是在每一次循环的时候,按照从头到尾的顺序自动遍历,给变量name赋值列表中的元素;
而while循环 是用一个计数器来索引列表,分别访问这个列表里面的每个元素。
第二个区别:
循环的终止条件不一样。
for循环的终止条件是遍历完这个列表;
while循环的终止条件是边界条件 ,counter < 5
,当边界条件为True的时候继续执行代码,为False的时候就终止执行。
简而言之,需要记住三条。
-
for循环常用于处理列表内的每个元素。
-
for循环有天然的边界条件,while循环没有,需要我们精心设计边界条件。
-
大多数时候,for循环和while循环可以互换使用。
小练习
number = 100
while number >= 0:
print(number)
number = number - 1
这段代码实现了输出100以下的非负整数。
第1行给number赋值100;
第2行,执行while循环,判断number是否>=0,如果是,就执行循环内的语句。
第3行输出了当前的number。
第4行,number-1再赋值给number,得到新的number再次进入循环