如何在Python3中构造While循环

来自菜鸟教程
跳转至:导航、​搜索

介绍

计算机程序非常适合用于自动化和重复任务,这样我们就不必这样做了。 重复类似任务的一种方法是使用 loops。 我们将在本教程中介绍 Python 的 while 循环

while 循环根据给定的 Boolean 条件实现代码的重复执行。 只要 while 语句的计算结果为 True,就会执行 while 块中的代码。

您可以将 while 循环视为重复的 条件语句 。 在 if 语句之后,程序继续执行代码,但在 while 循环中,程序跳回到 while 语句的开头,直到条件为 False。

与执行一定次数的 for 循环 不同,while 循环是基于条件的,因此您无需知道重复执行多少次代码。

先决条件

您应该在您的计算机或服务器上安装 Python 3 并设置编程环境。 如果您没有设置编程环境,您可以参考本地编程环境或服务器上的编程环境适合您的操作的安装和设置指南系统(Ubuntu、CentOS、Debian 等)

While 循环

在 Python 中,while 循环的构造如下:

while [a condition is True]:
    [do something]

正在做的事情将继续执行,直到正在评估的条件不再为真。

让我们创建一个执行 while 循环的小程序。 在这个程序中,我们将要求用户输入密码。 在经历这个循环时,有两种可能的结果:

  • 如果密码 正确,则 while 循环将退出。
  • 如果密码 正确,则 while 循环将继续执行。

Info: 要跟随本教程中的示例代码,请通过运行 python3 命令在本地系统上打开 Python 交互式 shell。 然后,您可以通过在 >>> 提示符后添加示例来复制、粘贴或编辑示例。


我们将在我们选择的文本编辑器中创建一个名为 password.py 的文件,并首先将变量 password 初始化为一个空的 string

密码.py

password = ''

空字符串将用于在 while 循环中接收用户的输入。

现在,我们将构造 while 语句及其条件:

密码.py

password = ''

while password != 'password':

这里,while 后面是变量 password。 我们正在查看变量 password 是否设置为字符串 password(基于稍后的用户输入),但您可以选择您喜欢的任何字符串。

这意味着如果用户输入字符串 password,则循环将停止,程序将继续执行循环外的任何代码。 但是,如果用户输入的字符串不等于字符串 password,则循环将继续。

接下来,我们将添加在 while 循环中执行某些操作的代码块:

密码.py

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

while 循环内部,程序运行一个提示输入密码的打印语句。 然后使用 input() 函数将变量 password 设置为用户输入。

程序将检查变量 password 是否分配给字符串 password,如果是,则 while 循环将结束。 让我们给程序另一行代码来说明何时发生这种情况:

密码.py

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

print('Yes, the password is ' + password + '. You may enter.')

最后一个 print() 语句在 while 循环之外,因此当用户输入 password 作为密码时,他们将在循环之外看到最终的打印语句。

但是,如果用户从不输入单词 password,他们将永远无法到达最后一个 print() 语句,并将陷入无限循环。

无限循环 当程序在一个循环内持续执行时,永远不会离开它。 要退出命令行上的无限循环,请按 CTRL + C

保存程序并运行它:

python password.py

系统将提示您输入密码,然后可以使用各种可能的输入对其进行测试。 这是程序的示例输出:

OutputWhat is the password?
hello
What is the password?
sammy
What is the password?
PASSWORD
What is the password?
password
Yes, the password is password. You may enter.

请记住,字符串是区分大小写的,除非您在检查之前还使用 字符串函数 将字符串转换为全小写(例如)。

带有 While 循环的示例程序

现在我们了解了 while 循环的一般前提,让我们创建一个有效地使用 while 循环的命令行猜谜游戏。 为了更好地理解这个程序是如何工作的,你还应该阅读使用条件语句转换数据类型

首先,我们将在我们选择的文本编辑器中创建一个名为 guess.py 的文件。 我们希望计算机提供随机数供用户猜测,因此我们将 import 使用 import 语句导入 random 模块。 如果你不熟悉这个包,你可以从 Python 文档 中了解更多关于 生成随机数的信息。

猜测.py

import random

接下来,我们将为变量 number 分配一个随机整数,并将其保持在 1 到 25(含)的范围内,希望它不会使游戏变得太困难。

猜测.py

import random

number = random.randint(1, 25)

此时,我们可以进入我们的 while 循环,首先初始化一个变量,然后创建循环。

猜测.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')

    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

我们已经将变量 number_of_guesses 初始化为 0,因此我们会在循环的每次迭代中增加它,这样我们就不会出现无限循环。 然后我们添加了 while 语句,使 number_of_guesses 总共限制为 5 个。 在第五次猜测之后,用户将返回命令行,目前,如果用户输入的不是整数,他们将收到错误消息。

在循环中,我们添加了一个 print() 语句来提示用户输入一个数字,我们使用 input() 函数将其接收并设置为 guess 变量。 然后,我们将 guess 从字符串转换为整数。

在循环结束之前,我们还想将 number_of_guesses 变量增加 1,这样我们就可以遍历循环 5 次。

最后,我们写一个条件if语句,看看用户生成的guess是否等价于计算机生成的number,如果是则使用[X174X ]break 语句 退出循环。

该程序功能齐全,我们可以使用以下命令运行它:

python guess.py

虽然它有效,但现在用户永远不知道他们的猜测是否正确,他们可以猜测完整的 5 次而不知道他们是否正确。 当前程序的示例输出如下所示:

OutputGuess a number between 1 and 25:
11
Guess a number between 1 and 25:
19
Guess a number between 1 and 25:
22
Guess a number between 1 and 25:
3
Guess a number between 1 and 25:
8

让我们在循环之外添加一些条件语句,以便向用户提供关于他们是否正确猜测数字的反馈。 这些将放在我们当前文件的末尾。

猜测.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

此时,程序会告诉用户他们猜对了还是错了,这可能要等到用户猜不出来的循环结束时才会发生。

为了给用户一点帮助,让我们在 while 循环中添加更多的条件语句。 这些可以告诉用户他们的数字是太低还是太高,这样他们就更有可能猜到正确的数字。 我们将在我们的 if guess == number 行之前添加这些

猜测.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess < number:
        print('Your guess is too low')

    if guess > number:
        print('Your guess is too high')

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

当我们再次使用 python guess.py 运行程序时,我们看到用户在猜测时获得了更多的指导帮助。 所以,如果随机生成的数字是12,用户猜到了18,就会被告知猜的太高了,可以相应地调整下一次的猜测。

可以做更多的事情来改进代码,包括当用户不输入整数时的错误处理,但在这个例子中,我们看到一个 while 循环在一个简短的命令行程序中工作。

结论

本教程介绍了 while 循环如何在 Python 中工作以及如何构造它们。 While loops 继续循环通过代码块,前提是 while 语句中设置的条件为 True。

从这里,您可以通过阅读关于 for loopsbreak、continue 和 pass 语句 的教程继续了解循环。