第27课 循环招式升级while
我们不仅可以遍历字符串列表,也可以遍历字符串,如下所示:

程序运行结果如下:
我
爱
你
妈
妈
因为print是分行打印出来,遍历后,将横着的一句话变成竖着的了。
学习了for循环,相信你对循环的“内功心法”已经掌握了。现在我们学习另外一种招式——while循环。它还有一个更形象的名字,叫作条件循环,在规定的条件内才会执行循环。
它的基本形式是这样的:
while条件判断:
执行语句……
一起来看下面这幅图,你会了解得更清楚。只要条件判断表达式的结果值是True(真),就会一直执行,而条件判断表达式的结果值变成False(假),循环就结束了。

for循环更多的是控制次数,while循环控制的是条件,如果条件成立,就继续循环,否则不再进行循环。
现在使用while循环判断是否上学。
条件是:“今天是工作日。”
周一:今天是周一,是工作日,条件成立,继续上学。
周二:今天是周二,是工作日,条件成立,继续上学。
周三:今天是周三,是工作日,条件成立,继续上学。
周四:今天是周四,是工作日,条件成立,继续上学。
周五:今天是周五,是工作日,条件成立,继续上学。
周六、周日:今天是周末,不是工作日,条件不成立,不上学。
从周一循环到周五都要上学,直到遇到了周末才不用上学。
条件循环语句的执行流程如下:
条件判断表达式求值,当结果值为True(真)时,执行语句(可以是一条语句,或者语句块),执行完语句块,重新对条件判断表达式求值。直到条件判断表达式的值为False(假),则终止循环。
等于多少1. 1+2+3+4+5+6+…+100
你知道1+2+3+4+5+6+…+100等于多少吗?我们通过while循环语句来计算1+2+3+4+5+6+…+100的值。
下面我们来学习怎么用循环计算的和,我们需要用到两个变
while 1~100
量total和count来完成这个任务,total将不断地累加,count不断地增加1。

程序运行结果如下:
1+2+3+4+…+100=5050
下面来看while条件循环的代码解释:
count=0 total=0
以作为条件判断表达式,当其结果值为时,执行后续的代码块
#count<=100 True while(count<=100):
进行求和计算
total=total+count#
对执行的操作
count=count+1#count +1
当时,对应的条件判断表达式的结果值为,因而终止条件循环,调回
#count=101 False
主程序,打印结果为
print("1+2+3+4+…+100=%d"% total)
石头剪刀布2.
石头剪刀布这个游戏大家都玩过,游戏规则特别简单,两个人猜拳,可以出石头、剪刀、布中的任意一个,石头可以对付剪刀,布可以包裹石头,剪刀将布剪坏。它们真是一物降一物。
我们写一个程序和计算机玩猜拳游戏,当玩家赢了时,继续游戏;当计算机赢了时,游戏终止。需要使用while循环。
设置计算机的3种手势。

设置玩家手势。

判断玩家的手势是不是剪刀、石头、布,你不能随便给一个手势,这样计算机可不认识,不认识时是要提醒你的。

判断计算机和玩家谁赢谁输。

将代码组合成一个完整的程序。

程序运行结果如下:
输入、石头、剪刀、布:石头
计算机出了:剪刀,你赢了!
输入石头、剪刀、布:布
计算机出了:剪刀,你输了!
在上面的程序中,我们设置了一个变量isWin来标识计算机是否赢了。当计算机赢了时,游戏退出。while后面的条件判断表达式为
not isWin,意思是:计算机没有赢。只要计算机没有赢,while循环的条件判断表达式的结果就是True,就会继续执行循环中的语句,玩家就可以继续游戏。
计算机会随机生成一个数字并赋值给变量num,代表计算机出的手势,用变量text接收玩家的手势。
按照我们制定的游戏规则,如果玩家赢了或者平局,此时while后面的条件判断not isWin为True,则继续执行代码块,继续游戏;如果计算机赢了,则将isWin设置为True,此时while后面的条件判断not isWin的结果值为False,退出游戏。具体的逻辑我们绘制成了一幅图,你也可以尝试绘制一下。