Python 是一种广泛应用于应用开发、Web 开发和数据分析的面向对象编程语言。它之所以成为目前最流行的编程语言之一,部分原因在于它是免费且开源的,拥有庞大的标准库,并且可以轻松地与其他编程语言集成。Python 支持三种主要类型的循环:
while
循环for
循环- 嵌套循环
本文将重点介绍 Python 编程中的基本循环语句之一——while
循环。我们将探讨 while
循环的基本概念,以及如何结合 break
语句、continue
语句和 else
子句来增强循环的功能。最后,我们会通过一个练习来巩固对 Python while
循环的理解。
什么是Python while
循环
while
循环是一种控制结构,用于重复执行一段代码,直到指定的条件不再满足为止。与 for
循环不同,while
循环适用于事先不知道需要迭代多少次的情况。
语法
下面是 Python while
循环的基本语法:
while expression:
statement(s)
- expression:这是一个布尔表达式,用于判断循环是否应该继续执行。如果表达式的结果为
True
,则执行循环体内的语句;如果结果为False
,则停止循环。 - statement(s):这是循环体,即当
expression
为True
时将反复执行的一段或多段代码。
流程图
一个简单的 while
循环流程图如下所示:
+------------------+
| 初始化变量 |
+------------------+
|
v
+------------------+
| 检查条件 |
| (expression) |
+------------------+
|
+------v------+
| | |
| False True
| | |
v v v
退出循环 +------------------+
| 执行循环体 |
| (statement(s)) |
+------------------+
|
v
+------------------+
| 返回检查条件 |
+------------------+
这个流程图显示了 while
循环的工作原理:首先初始化一些变量,然后检查条件是否为真。如果是,则执行循环体内的代码,并再次检查条件。这一过程会持续进行,直到条件变为假,此时循环结束。
示例
下面是一个使用 while
循环的简单示例,该示例计算从1加到100的总和:
# 初始化计数器和累加器
counter = 1
total_sum = 0
# 当计数器小于等于100时,执行循环
while counter <= 100:
total_sum += counter # 将当前计数器的值加到总和上
counter += 1 # 计数器递增
# 输出最终结果
print("The sum from 1 to 100 is:", total_sum)
在这个例子中,循环会一直运行,直到 counter
的值超过100,此时条件变为 False
,循环终止。
break
语句在 while
循环中的用法
break
语句可以在循环体内部使用,当某个特定条件满足时,break
会立刻结束整个循环,即使循环的条件仍然为真。
示例代码
# 初始化变量以存储当前数字
num = 1
# 遍历数字,直到找到第一个偶数
while True:
if num % 2 == 0:
print("First even number found:", num)
break # 如果找到了偶数,则退出循环
num += 1 # 如果当前数字不是偶数,则增加1后继续循环
解释
- 初始化变量:
num
被初始化为1,作为寻找偶数的起始点。 - 无限循环:
while True:
创建了一个无限循环,意味着循环将持续执行,除非遇到break
语句。 - 条件检查:在循环体内,我们检查
num
是否能被2整除(即是否为偶数)。如果num
是偶数,程序会打印出找到的第一个偶数,并使用break
语句跳出循环。 - 递增操作:如果
num
不是偶数,num
的值将增加1,然后循环会再次检查新的num
值,直到找到一个偶数。
这个例子展示了如何使用 break
语句来控制循环的提前终止,这在处理不确定循环次数的问题时非常有用。
continue
语句在 while
循环中的用法
continue
语句用于跳过当前循环体中剩余的代码,并立即开始下一次迭代。这对于在某些条件下跳过特定操作非常有用。
示例代码
# 初始化变量以存储当前数字
num = 1
# 遍历数字并只打印偶数
while num <= 10:
if num % 2 != 0:
num += 1
continue # 如果 num 是奇数,跳过剩余的循环体并进入下一次迭代
print(num)
num += 1
解释
- 初始化变量:
num
被初始化为1,作为遍历的起始点。 - 循环条件:
while num <= 10:
设置了循环的条件,即当num
小于或等于10时,循环将继续执行。 - 条件检查:在循环体内,我们使用
if num % 2 != 0:
来检查num
是否为奇数。如果是奇数:num += 1
:将num
增加1。continue
:跳过当前迭代的剩余部分,直接进入下一次迭代。
- 打印偶数:如果
num
是偶数,程序会打印num
的值,然后num
增加1,继续下一次迭代。
输出结果
这个循环将输出1到10之间的所有偶数,跳过所有的奇数。具体输出如下:
2
4
6
8
10
while
循环与 else
子句
在 Python 中,while
循环可以有一个可选的 else
子句。如果循环因为条件不再满足而自然结束,else
子句中的代码会被执行。但是,如果循环因为 break
语句而提前退出,else
子句将不会被执行。
示例代码
# 初始化变量
count = 0
# 遍历数字
while count < 5:
print("Inside the loop:", count)
count += 1
else:
print("Loop completed without encountering a break statement.")
解释
- 初始化变量:
count
被初始化为0,作为循环的起始点。 - 循环条件:
while count < 5:
设置了循环的条件,即当count
小于5时,循环将继续执行。 - 循环体:在循环体内,程序会打印当前的
count
值,然后将count
增加1。 - else 子句:如果循环自然结束(即
count
达到5,循环条件不再满足),else
子句中的代码将被执行,打印一条消息表示循环已完成且未遇到break
语句。
输出结果
这个循环将输出以下内容:
Inside the loop: 0
Inside the loop: 1
Inside the loop: 2
Inside the loop: 3
Inside the loop: 4
Loop completed without encountering a break statement.
示例:带 break
语句的 while
循环
为了更好地理解 else
子句的行为,我们可以看一个带有 break
语句的例子:
# 初始化变量
count = 0
# 遍历数字
while count < 5:
print("Inside the loop:", count)
if count == 3:
break # 提前退出循环
count += 1
else:
print("Loop completed without encountering a break statement.")
解释
- 初始化变量:
count
被初始化为0。 - 循环条件:
while count < 5:
设置了循环的条件。 - 循环体:在循环体内,程序会打印当前的
count
值。如果count
等于3,break
语句会提前退出循环。 - else 子句:由于循环在
count
等于3时提前退出,else
子句中的代码不会被执行。
输出结果
这个循环将输出以下内容:
Inside the loop: 0
Inside the loop: 1
Inside the loop: 2
Inside the loop: 3
结束 while
循环
在 Python 中,有几种方法可以结束 while
循环:
- 使用
break
语句:当某个特定条件满足时,break
语句会立即终止循环。 - 条件不再满足:当
while
循环的条件不再为True
时,循环自然结束。 - 使用
return
语句:如果while
循环位于一个函数中,return
语句会终止循环并返回函数的结果。
示例:使用 break
语句结束 while
循环
count = 0
while True:
print(count)
count += 1
if count >= 5:
break # 如果 count 大于或等于 5,结束循环
解释
- 初始化变量:
count
被初始化为0。 - 无限循环:
while True:
创建了一个无限循环,这意味着循环会一直执行,直到遇到break
语句。 - 循环体:在每次迭代中,程序会打印当前的
count
值,并将count
增加1。 - 条件检查:如果
count
大于或等于5,break
语句会被执行,从而终止循环。
输出结果
这个循环将输出以下内容:
0
1
2
3
4
另一个示例:自然结束 while
循环
除了使用 break
语句,你也可以让 while
循环在条件不再满足时自然结束。
count = 0
while count < 5:
print(count)
count += 1
解释
- 初始化变量:
count
被初始化为0。 - 循环条件:
while count < 5:
设置了循环的条件,即当count
小于5时,循环将继续执行。 - 循环体:在每次迭代中,程序会打印当前的
count
值,并将count
增加1。 - 自然结束:当
count
达到5时,条件count < 5
不再为True
,循环自然结束。
输出结果
这个循环将输出以下内容:
0
1
2
3
4
While 循环常见问题
1. 什么是 Python 中的 do-while 循环?请举个例子。
Python 本身并没有像其他一些编程语言(如 C、C++ 或 Java)那样的内置 do-while
循环。然而,你可以通过使用 while
循环和 break
语句来模拟 do-while
循环的行为。do-while
循环的特点是循环体至少执行一次,然后再检查条件。
示例
# 模拟 do-while 循环
count = 0
while True:
print(count)
count += 1
if count >= 5:
break
解释
- 初始化变量:
count
被初始化为0。 - 无限循环:
while True:
创建了一个无限循环。 - 循环体:在每次迭代中,程序会打印当前的
count
值,并将count
增加1。 - 条件检查:如果
count
大于或等于5,break
语句会被执行,从而终止循环。
这个循环至少会执行一次,然后在每次迭代后检查 count
是否大于或等于5,类似于 do-while
循环的行为。
2. 什么是 while
循环?
while
循环是一种控制流语句,允许基于给定条件重复执行代码块。只要条件为真,循环就会继续执行代码块。一旦条件变为假,循环终止。
语法
while condition:
# 要执行的代码块
3. while
循环和 for
循环有什么区别?
-
while
循环:- 用途:当条件为真时,重复执行代码块。
- 特点:适用于事先不知道迭代次数的情况。
- 示例:
count = 0 while count < 5: print(count) count += 1
-
for
循环:- 用途:遍历序列(如列表、元组、字符串等)或其他可迭代对象。
- 特点:适用于已知迭代次数或需要遍历集合中的元素的情况。
- 示例:
for i in range(5): print(i)
4. 如何在 Python 中重启 while
循环?
你可以使用 continue
语句来重启 while
循环。当 continue
语句在循环中遇到时,当前迭代的剩余部分会被跳过,直接开始下一次迭代。
示例
count = 0
while count < 5:
count += 1
if count == 3:
continue # 当 count 为 3 时,跳过本次迭代的剩余部分,重新开始下一次迭代
print(count)
解释
- 初始化变量:
count
被初始化为0。 - 循环条件:
while count < 5:
设置了循环的条件。 - 循环体:在每次迭代中,
count
增加1。 - 条件检查:如果
count
等于3,continue
语句会被执行,跳过本次迭代的剩余部分(即print(count)
),直接开始下一次迭代。
输出结果
这个循环将输出以下内容:
1
2
4
5
注意,当 count
为3时,print(count)
被跳过,因此3没有被打印出来。
希望这些解释和示例能帮助你更好地理解 Python 中的 while
循环及其相关概念!
练习题
问题描述
编写一个程序,使用 while
循环来累加所有小于10的数字。
解决方案
代码
# 初始化变量
total = 0
num = 1
# 遍历小于10的数字并将它们累加到 total 中
while num < 10:
total += num
num += 1
# 打印总和
print("The sum of all numbers less than 10:", total)
解释
-
初始化变量:
total
被初始化为0,用于存储累加的总和。num
被初始化为1,作为累加的起始数字。
-
循环条件:
while num < 10:
设置了循环的条件,即当num
小于10时,循环将继续执行。
-
循环体:
total += num
:将当前的num
值加到total
上。num += 1
:将num
增加1,以便在下一次迭代中处理下一个数字。
-
打印结果:
print("The sum of all numbers less than 10:", total)
:在循环结束后,打印累加的总和。
输出结果
这个程序将输出以下内容:
The sum of all numbers less than 10: 45