【Python 第8课】while


先介绍一个新东西:注释

python里,以“#”开头的文字会被忽略,不会被认为是可执行的代码。

print ("hello world")

print ("hello world")    #输出一行字

是同样的效果。但后者可以帮助开发者更好地理解代码。

在接下来的课程中,我会经常用注释来解释代码。

 

#======== 进入今天的正题 ========#

 

用if改进完我们的小游戏后,功能已经基本实现了。很多同学做完后纷纷表示,每次只能猜一次,完了之后又得重新run,感觉好麻烦。能不能有办法让玩家一直猜,直到猜中为止?答案很显然:如果这种小问题都解决不了,那 python 可就弱爆了。

 

最简单的解决方法就是:while

 

同 if 一样,whil e也是一种控制流语句,另外它也被称作循环语句。继续来看渣画质手绘流程图:

while,英文翻译过来就是“当...的时候”。

程序执行到 while 处,“当”条件为 True 时,就去执行 while 内部的代码;“当”条件为 False 时,就跳过。

 

语法为:

while 条件:
    循环执行的语句

 

同 if 一样,注意冒号,注意缩进。

 

今天的栗子:

# coding: gbk
a = 1             # 为了后面的条件能满足,先把a设为1
while a != 0:     # 如果a不等于0就循环(1不等于0)
    print("please input")
    a = int(input())     # 在循环内部获取输入,改变a的值(想想看不改会怎样?)
print("over")

 

程序执行后,会不断向你询问输入,直到你输入0,条件 a!=0 不满足,循环结束。

 

现在,想想怎么用while改进小游戏?有多种写法,大家自己思考下,我不多做说明了。

下图给出一种方法。

解释下:

  1. 代码中,我们用了一个叫做 bingo 的变量,来记录是否猜中了结果,猜中了就是 True,没猜中就是 False(bingo本身就是有“赢了”的意思,你也可以命名为 caizhong,这个随意)。
  2. 一开始,我们给 bingo 赋值为 False,使程序可以进入循环。
  3. 每次循环中,我们都会输入一遍 answer,然后判断是大是小还是相等。如果相等了,再此条件的代码块里面增加一句 bingo = True,修改 bingo 的值,使得程序在下一次循环判断的时候,发现 bingo == False 这个循环条件不再满足,于是程序结束。

注意:这里出现了两层缩进,要保持每层缩进的空格数相同。

 

到此为止,小游戏已经基本成型了。不过好像还差一点:每次自己都知道答案,这玩起来有神马意思。

 

明天来讲,怎么让你不知道电脑的答案。

 

PS:如果你对本课中的 bingo = False、bingo == False 和 bingo = True 感到困惑,先别着急挠头,我们会在后面 11.逻辑判断 课程中进一步详细解释。

 

#======== 作业练习 ========#

你可以在公众号Crossin的编程教室中的课外辅导栏目里找到一些 练习题,学了 while 之后,你可以试一试完成 3~6 题。