Skip to content

循环利器:while语句详解

while语句是Python中一种强大的循环结构,它允许你重复执行一段代码,只要给定的条件保持为真(True)。可以把它想象成一个不知疲倦的工人,只要任务还在,就会不停地工作。

while循环的通用结构如下:

python
while 条件表达式:
    # 循环体:需要重复执行的代码块
    # 可以包含更新条件表达式的语句

工作原理:

  1. 条件判断: 首先,Python会评估条件表达式的真假。
  2. 执行循环体: 如果条件表达式为真(True),则执行循环体中的代码。
  3. 重复执行: 执行完循环体后,程序会再次回到第1步,重新评估条件表达式。这个过程会一直重复,直到条件表达式变为假(False)。
  4. 退出循环:条件表达式为假(False)时,循环结束,程序会跳到while语句之后的代码继续执行。

用流程图可以更直观地展示while循环的执行过程:

while 循环迭代的代码流

重点:更新条件表达式

为了避免while循环变成永无止境的“死循环”,通常需要在循环体中包含一个或多个语句,用于更新条件表达式中使用的变量。这样,循环在经过一定次数的迭代后,条件表达式最终会变为假(False),从而结束循环。

示例:遍历列表

让我们通过一个例子来理解while循环的具体用法。假设我们有一个汽车品牌列表,我们想逐个打印出列表中每个元素的索引和值。

python
cars = ["现代", "本田", "福特", "丰田", "宝马", "大众"]
i = 0  # 初始化索引变量
while i < len(cars):  # 循环条件:索引小于列表长度
    print(i, cars[i])  # 打印索引和对应的值
    i += 1  # 更新索引:每次循环增加1

输出:

0 现代
1 本田
2 福特
3 丰田
4 宝马
5 大众

在这个例子中:

  • i = 0:我们首先初始化一个索引变量i为0,表示从列表的第一个元素开始。
  • while i < len(cars):这是循环的条件,只要i小于列表cars的长度,循环就会继续执行。
  • print(i, cars[i]):在循环体中,我们打印出当前的索引i和对应的列表元素cars[i]
  • i += 1:这行代码非常关键,它将索引i的值增加1。如果没有这行代码,i的值将永远保持为0,循环条件永远为真,导致死循环。

练习:用while循环解决实际问题

现在,让我们通过几个练习来巩固你对while循环的理解。

1. 复利计算

复利是指在计算利息时,把上一期的利息也加入本金中,再计算下一期的利息。编写一个程序,使用while循环计算在给定本金、年利率和投资年限下,可以获得的总利息。

python
principal = float(input("请输入本金金额: "))
annual_rate = float(input("请输入年利率: "))
years = int(input("请输入投资年限(年): "))

amount = principal  # 初始金额等于本金
year = 0 # 初始化年份计数器

while year < years:
    interest = amount * annual_rate / 100  # 计算当年的利息
    amount += interest  # 将利息加入本金
    year += 1 #年份增加1

total_interest = amount - principal  # 计算总利息
print("总利息为:", total_interest)

示例输出:

请输入本金金额: 500000
请输入年利率: 5
请输入投资年限(年): 3
总利息为: 78812.5

2. 计算阶乘

阶乘是指从1到给定正整数n的所有整数的乘积,表示为n!。例如,5! = 5 * 4 * 3 * 2 * 1 = 120。 编写一个程序,使用while循环计算给定正整数n的阶乘。

python
n = int(input("请输入一个正整数: "))

factorial = 1  # 初始化阶乘为1
while n > 0:
    factorial *= n  # 将n乘到阶乘中
    n -= 1  # n减1

print("阶乘为:", factorial)

示例输出:

请输入一个正整数: 6
阶乘为: 720

通过这些例子,你应该对while循环有了更深入的了解。记住,while循环的关键在于设置正确的循环条件和更新条件表达式,以避免死循环的发生。掌握while循环,你就可以编写出更加灵活和强大的Python程序。