更多课程 选择中心


Python培训

400-996-5531

Python while 循环

  • 发布:Python培训
  • 来源:高效程序员
  • 时间:2019-08-22 13:13

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 并不鼓励在一行上使用多个语句,所以即使语法上没有任何问题,也应该尽量避免。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python二级等级考试相关问题全解答
下一篇:Python django web学习(一)

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省