while
语句是 Python 中的另一种常见循环结构,与 for-in
语句不同,while
循环根据一个条件判断来决定是否继续执行循环体。当条件为 True
时,循环体会被反复执行;一旦条件变为 False
,循环会终止。while
循环通常用于当你不确定循环次数,或者当需要根据某个条件持续执行任务时使用。
1. while
语句的基本语法
while
语句的基本语法结构如下:
while 条件:# 执行的操作
条件
:一个返回布尔值(True
或False
)的表达式。只要条件为True
,while
循环就会一直执行。执行的操作
:在每次循环中执行的代码块,通常是对某些数据的操作。
示例:打印从 1 到 5 的数字
i = 1
while i <= 5:print(i)i += 1 # 每次循环后增加 1
输出结果:
1
2
3
4
5
在这个示例中,while
循环的条件是 i <= 5
。每次循环后,i
的值都会增加 1,直到 i
不再小于等于 5,循环停止。
2. 无限循环
如果 while
语句中的条件始终为 True
,则会形成一个无限循环,程序会一直执行循环体中的代码,直到外部打断或程序被强制停止。无限循环通常用于需要持续运行某个任务,直到满足某个条件才退出的情况。
示例:无限循环打印数字
i = 1
while True:print(i)i += 1if i > 10:break # 当 i 大于 10 时退出循环
输出结果:
1
2
3
4
5
6
7
8
9
10
在这个例子中,while True
表示一个永远为 True
的条件,因此会持续打印数字,直到 i
大于 10 时,通过 break
语句跳出循环。
3. while
语句的应用场景
3.1 计算数字的和
如果我们不知道循环的次数,但知道何时停止循环,可以使用 while
循环来累加数字,直到满足条件。
示例:计算从 1 到 100 的总和
sum = 0
i = 1
while i <= 100:sum += ii += 1print("从 1 到 100 的总和是:", sum)
输出结果:
从 1 到 100 的总和是: 5050
在这个例子中,我们使用 while
循环从 1 累加到 100,计算出它们的总和。
3.2 用户输入验证
while
循环也可以用于在用户输入时进行验证,直到用户输入合法数据为止。
示例:验证用户输入是否为有效的数字
while True:user_input = input("请输入一个数字: ")if user_input.isdigit():print(f"你输入的是数字: {user_input}")breakelse:print("输入无效,请重新输入!")
在这个示例中,while
循环会不断要求用户输入,直到用户输入的是一个合法的数字,才会跳出循环并打印用户输入的数字。
3.3 计算阶乘
阶乘是指一个正整数与其所有小于它的正整数的乘积。使用 while
循环可以实现阶乘的计算。
示例:计算 5 的阶乘
num = 5
factorial = 1
while num > 1:factorial *= numnum -= 1print("5 的阶乘是:", factorial)
输出结果:
5 的阶乘是: 120
在这个例子中,while
循环通过逐步减小 num
的值,计算出 5 的阶乘。
4. 使用 break
和 continue
控制循环
与 for-in
循环一样,while
循环也支持 break
和 continue
语句来控制循环的执行流程。
4.1 使用 break
语句
break
用来提前终止循环,无论条件是否满足,break
一旦被触发,循环会立刻退出。
示例:通过 break
跳出循环
i = 1
while i <= 10:if i == 6:break # 当 i 等于 6 时,跳出循环print(i)i += 1
输出结果:
1
2
3
4
5
在这个例子中,当 i
等于 6 时,break
语句终止了循环,因此 6
之后的数字没有被打印。
4.2 使用 continue
语句
continue
用来跳过当前的循环迭代,直接进入下一次循环。continue
语句不会终止整个循环,只会跳过当前循环的剩余部分。
示例:使用 continue
跳过某些数字
i = 0
while i < 10:i += 1if i % 2 == 0:continue # 跳过偶数,打印奇数print(i)
输出结果:
1
3
5
7
9
在这个例子中,continue
跳过了所有偶数,只有奇数被打印出来。
5. while
循环的优化:避免死循环
while
循环有时可能会导致死循环,即条件永远为 True
,而循环体无法停止。为了避免死循环,需要确保循环条件在某些时刻会变为 False
。
示例:死循环示例
i = 1
while i <= 5:print(i)# 这里缺少i的变化,导致死循环
上面的代码会导致死循环,因为变量 i
没有在循环体中改变,因此条件永远为 True
,程序会一直执行下去。
优化:确保变量变化
i = 1
while i <= 5:print(i)i += 1 # 确保循环条件会变为 False
通过增加 i += 1
,保证条件最终会变为 False
,避免死循环。
6. 课后练习
6.1 计算从 1 到 10 的偶数和
使用 while
循环计算从 1 到 10 中所有偶数的和。
6.2 查找质数
编写程序使用 while
循环查找并打印 1 到 50 之间的所有质数。
6.3 数字反转
给定一个数字,使用 while
循环将其反转并打印。
7. 本章小结
while
语句是一种非常灵活的控制结构,适用于在循环次数不确定的情况下执行重复任务。通过合理使用 while
循环的条件判断、break
和 continue
语句,可以有效地控制循环的执行流程。理解 while
循环的工作原理并熟练使用它,将有助于处理许多需要重复执行的任务。