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 循环的工作原理并熟练使用它,将有助于处理许多需要重复执行的任务。
