联系方式

咨询热线:400-998-6158

点击此处免费预约试听课程»

常见问题
学习资讯
师资介绍
学习资讯

Python while 循环的相关介绍

Python while 循环与 for 循环不同,while 循环会重复执行一系列动作,直到循环条件变为 False。

while 循环

通常,当无法预先确定循环的确切次数时,使用 while 循环。

较简单的 while 循环,语法格式如下:


while <expr>: 

<statement(s)>

<expr> 是一个布尔表达式。

<statement(s)> 表示要重复执行的代码块,通常称为循环体,用缩进表示。

首先程序会检查 <expr>,如果为 True,则执行循环体。然后再次检查 <expr>,如果仍为 True,则再次执行循环体。这一直持续到 <expr> 为 False,此时程序执行进入循环体之外的*一个语句。

注意:如果一开始条件就不成立,那么循环体将永远不会被执行。

例如,打印 1 到 5 之间的整数:


n = 0

while n < 5:

 += 1

print(n)

Tips:如果一个变量的值随着每次新的循环迭代而变化,那么这个变量被称为计数器。这里,n 就是一个计数器。

运行程序,会产生以下输出:


1

2

3

4

5

现在,对执行过程进行逐步分解:

较初 n 是 0,当进入 while 语句时,表达式 n < 5 成立,因此循环体执行,先将 n 加 1 到 1,然后打印出 n 的值。

当循环体完成时,程序执行返回到 while 循环顶部,并再次计算表达式,它仍然成立,所以循环体再次执行,并打印 2。

这一直持续到 n 变为 5。此时,当计算表达式时,它不成立,循环因此会终止。

else 子句

与 for 循环相同,在 while 循环中也可以有一个可选的 else 子句。

Tips:从语义上讲,else 子句的工作方式与 for 循环中的完全相同(只有在循环不被 break 语句“破坏”时,才会被执行)。

其语法格式如下:


while <expr>:

<statement(s)>

else: <statement(s)>

那么,到底在什么情况下,才会在循环中真正地用到 else 子句呢?

较常见的情况是:搜索列表中的一个特定项。如果找到了,使用 break 退出循环,else 子句则用于处理没有找到时的情况:


colors = ['red', 'green', 'blue']

clr = 'orange'

while i < len(colors):

if colors[i] == clr:

# 找到时的处理

break

i += 1

else:

# 未找到时的处理

print(clr, 'not found')

运行程序,会产生以下输出:


orange not found

注意:循环中的 else 子句不太常见,甚至看起来有点奇怪。但是,如果能为代码增加清晰度,也不必刻意去回避它!

无限循环

在 while 循环中,语句的执行取决于是否满足循环条件。当条件一直成立时,循环将会永远持续下去,这种循环被称为无限循环。

循环陷阱

虽然 while 循环非常强大,但是需要注意一个陷阱:无限循环。

考虑一下这个例子:


while True:

print('Have a good day')

很明显,True 永远成立。因此,这会启动一个无限循环。

运行程序,会产生以下输出:

Have a good day

Have a good day

Have a good day

...

Traceback (most recent call last):

...

KeyboardInterrupt

懊恼了吧!消息会被无休止地打印,直到强制退出(按 Ctrl + C)或世界末日的到来。

打破无限循环

无限循环实际上很常见,但*要确保循环在某个时刻被打破,这样它才不会真正地无限执行下去。

在 Python 中,break 语句是打破无限循环的一种常用方法。

例如,猜测一个人的年龄,直到猜中为止:


# 待猜中的年龄

my_age = 18

while True: num = int(input('Please enter a number : '))

if num == my_age:

break

运行程序,会产生以下输出:


Please enter a number : 20

Please enter a number : 25

...

Please enter a number : 30

Please enter a number : 18

这里,我们引入了一个新的内置函数 - input(),它会向用户显示一个提示,并耐心等待内容的输入。

如果输入的数字不是 18,则会一直提示你输入,直到输入 18 为止,这时 break 语句就会被调用,从而摆脱无限循环。

单行 while 循环

与 if 语句一样,可以在一行中指定 while 循环。

如果在循环体中有多个语句,它们可以用分号分隔:


n = 0

while n < 5: n += 1; print(n)

但这只适用于简单语句,不能将两个复合语句组合成一行。

假如,像下面这样:


n = 0

while n < 5: n += 1; if True: print(n)

就会报错:SyntaxError: invalid syntax

注意:PEP 8 并不鼓励在一行上使用多个语句,所以即使语法上没有任何问题,也应该尽量避免。

学校联系方式

更多培训课程,学习资讯,课程优惠等学校信息,请进入 郑州金水区java培训郑州上街区C语言培训 网站详细了解,免费咨询电话:400-998-6158

相关课程