少儿编程Python第3课-while循环语句(猜数字游戏)


如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人摘桃子,如果机器人拿着筐子一直没有摘到我们要求的100个,那么我们就要一直发出让机器人继续摘桃子,直到100个才能停止。当然你可能已经注意到了,刚才的描述中不仅仅有需要重复的动作,还需要用到上一章讲的分支结构。

Python中,while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块。

在Python中构造循环结构有两种做法,一种是`for-in`循环,一种是`while`循环,本节先讲while循环。

while 语句的语法格式如下:

while 条件表达式:

代码块

这里的代码块,还是指的缩进格式相同的多行代码,不过在循环结构中,它又称为循环体。

while 语句执行的具体流程为:首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块...如此循环,直到条件表达式的值为假(False),才终止循环。

while 循环结构的执行流程如图 1 所示。

实例1:打印 1~100 的所有数字

实现代码如下:

# 循环的初始化条件

num =1

# 当 num 小于100时,会一直执行循环体

while num <100:

print("num=", num)

# 迭代语句

num +=1

print("循环结束!")

num =1

# 当 num 小于100时,会一直执行循环体

while num <100:

print("num=", num)

# 迭代语句

num +=1

print("循环结束!")

运行程序会发现,程序只输出了 1~99,却没有输出 100。这是因为,当循环至 num 的值为 100 时,此时条件表达式为假(100<100),当然就不会再去执行代码块中的语句,因此不会输出 100。

注意,在使用 while 循环时,一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循环,永远无法结束这个循环。

例如,将上面 while 循环中的

num += 1

代码注释掉再运行,你会发现,Python 解释器一直在输出"num= 1",除非我们强制关闭解释器。

另外,与 if 分支语句类似的是,while 循环的循环体中所有代码必须使用相同的缩进,否则 Python 也会引发错误。例如如下程序:

# 循环的初始化条件

num = 1

# 当 num 小于100时,会一直执行循环体

while num < 100 :

print("num=", num)

# 迭代语句

num += 1

print("循环结束!")

num = 1

# 当 num 小于100时,会一直执行循环体

while num < 100 :

print("num=", num)

# 迭代语句

num += 1

print("循环结束!")

运行上面程序,将会看到执行一个死循环。这是由于

num += 1

代码没有缩进,这行代码就不属于循环体。这样程序中的 num 将一直是 1,从而导致 1 < 100 一直都是 True,因此该循环就变成了一个死循环。

实例2:猜数字游戏

下面我们通过一个“猜数字”的小游戏(计算机出一个1~100之间的随机数,人输入自己猜的数字,计算机给出对应的提示信息,直到人猜出计算机出的数字)来看看如何使用`while`循环。

```Python

"""

猜数字游戏

计算机出一个1~100之间的随机数由人来猜

计算机根据人猜的数字分别给出提示大一点/小一点/猜对了

"""

import random

answer = random.randint(1, 100)

counter = 0

while True:

counter += 1

number = int(input('请输入: '))

if number < answer:

print('大一点')

elif number > answer:

print('小一点')

else:

print('恭喜你猜对了!')

break

print('你总共猜了%d次' % counter)

if counter > 7:

print('你的智商余额明显不足')

```

"""

猜数字游戏

计算机出一个1~100之间的随机数由人来猜

计算机根据人猜的数字分别给出提示大一点/小一点/猜对了

"""

import random

answer = random.randint(1, 100)

counter = 0

while True:

counter += 1

number = int(input('请输入: '))

if number < answer:

print('大一点')

elif number > answer:

print('小一点')

else:

print('恭喜你猜对了!')

break

print('你总共猜了%d次' % counter)

if counter > 7:

print('你的智商余额明显不足')

```

上面的代码中使用了`break`关键字来提前终止循环,需要注意的是`break`只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了`break`之外,还有另一个关键字是`continue`,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。

你可能感兴趣的:(少儿编程Python第3课-while循环语句(猜数字游戏))