关于“while”循环

已完成

编写代码时,一个常见的难题是让其执行未知次数的任务。 在本单元中,你希望允许用户输入行星名称列表。 遗憾的是,你不知道用户输入了多少名称。 若要支持次数未知的循环,可以使用 while 循环。

while 循环在当某个条件为 true 时执行操作。 可以使用 while 循环来:

  • 检查文件中的另一行。
  • 检查是否已设置标志。
  • 检查用户是否已输入完值。
  • 检查是否有其他更改,以指示代码可以停止执行操作。

重要

创建 while 循环时,要记住的最重要一点是确保条件发生变化。 如果条件始终为 true,则 Python 将继续运行你的代码,直到程序发生故障。

while 循环的语法类似于 if 语句的语法。 要同时提供条件和要在条件为真时运行的代码。

while 循环有三个重要部分:

  • 关键字 while,后跟一个空格。

  • 测试的条件。 如果条件为 true,则运行 while 循环内的代码。

  • 要为每次迭代运行的代码,使用嵌套空格进行了缩进。 例如:

    while <condition>:
        # code here
    

让我们看看如何创建代码来提示用户输入值,然后允许他们在输入完值后输入 done。 在我们的示例中,用户输入是在 while 循环的基础上测试的条件。

user_input = ''

while user_input.lower() != 'done':
    user_input = input('Enter a new value, or done when done')

请注意,你要使用 input 来提示用户。 每次用户输入新值时,都将更改条件,这意味着 while 循环将在输入 done 后退出。

注意

在本示例中,我们使用 lower 了将输入转换为小写,这样即可进行不区分大小写的比较。

可以使用新输入的字符串,就像使用 input 捕获的任何其他字符串一样。 如果要将其添加到列表中,可以使用类似于以下示例的代码:

# Create the variable for user input
user_input = ''
# Create the list to store the values
inputs = []

# The while loop
while user_input.lower() != 'done':
    # Check if there's a value in user_input
    if user_input:
        # Store the value in the list
        inputs.append(user_input)
    # Prompt for a new value
    user_input = input('Enter a new value, or done when done')

请注意 if 循环内的 while 语句。 此语句测试 user_input 内的字符串值。 如果 while 循环是第一次运行,则没有任何值,因此没有任何内容要存储在 inputs 中。 第一次运行后,user_input 始终都会保留用户输入的值。 由于要测试 while 来确保该值不等于 done(用户为退出应用而输入的单词),因此你知道当前值是可添加到列表中的值。

注意

你可能熟悉支持 do 循环的其他编程语言,这让你能够在循环底部执行测试。 Python 不提供 do 循环。