计算机程序非常适合用于自动化和重复任务,这样我们就不必亲自执行。通过使用循环的一种方式来重复类似的任务。在本教程中,我们将介绍 Python 的while循环。
while
循环根据给定的布尔条件实现代码的重复执行。在while
块中的代码将在while
语句评估为True时执行。
你可以将while
循环看作是一个重复的条件语句。在if
语句之后,程序会继续执行代码,但在while
循环中,程序会跳回到while
语句的开头,直到条件为False。
与for循环执行一定次数不同,while
循环是基于条件的,因此你不需要知道重复执行代码的次数。
你应该已经安装了 Python 3,并在计算机或服务器上设置了编程环境。如果你还没有设置编程环境,可以参考本地编程环境或适合你操作系统(Ubuntu、CentOS、Debian等)的服务器编程环境的安装和设置指南。
在 Python 中,while
循环的构造方式如下:
while [条件为True]:
[做某事]
只要被评估的条件不再为True,被执行的操作将继续执行。
让我们创建一个执行while
循环的小程序。在这个程序中,我们将要求用户输入密码。在这个循环中,有两种可能的结果:
while
循环将退出。while
循环将继续执行。我们将在我们选择的文本编辑器中创建一个名为password.py
的文件,并开始通过将变量password
初始化为空字符串:
password = ''
空字符串将用于在while
循环中接收用户输入。
现在,我们将构造while
语句及其条件:
password = ''
while password != 'password':
在这里,while
后面跟着变量password
。我们要看看变量password
是否设置为字符串password
(基于稍后的用户输入),但你可以选择任何你喜欢的字符串。
这意味着如果用户输入字符串password
,那么循环将停止,程序将继续执行循环外的任何代码。然而,如果用户输入的字符串不等于字符串password
,循环将继续。
接下来,我们将添加在while
循环内执行的代码块:
password = ''
while password != 'password':
print('What is the password?')
password = input()
在while
循环内部,程序运行一个打印语句提示用户输入密码。然后,使用input()
函数将变量password
设置为用户的输入。
程序将检查变量password
是否被赋予字符串password
,如果是,while
循环将结束。让我们为当这种情况发生时再添加一行代码:
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
你将被提示输入密码,并可以使用各种可能的输入进行测试。以下是程序的示例输出:
What 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
循环有效的命令行猜数字游戏。为了更好地理解这个程序的工作原理,你还应该阅读有关使用条件语句和转换数据类型的内容。
首先,在我们选择的文本编辑器中创建一个名为guess.py
的文件。我们希望计算机为用户生成随机数字,所以我们将使用import
语句导入random
模块。如果你对这个包不熟悉,可以从Python文档中了解更多关于生成随机数的内容。
import random
接下来,我们将把一个随机整数赋给变量number
,并保持在1到25的范围内(包括边界),希望这不会使游戏太难。
import random
number = random.randint(1, 25)
此时,我们可以进入我们的while
循环,首先初始化一个变量,然后创建循环。
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
,如果是,我们使用break
语句来跳出循环。
程序已经完全运行,我们可以使用以下命令运行它:
python guess.py
尽管它可以工作,但是目前用户永远不知道他们的猜测是否正确,他们可以在不知道是否猜对的情况下猜测5次。当前程序的示例输出如下:
Guess 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
让我们在循环外部添加一些条件语句,以便告诉用户他们是否正确猜到了数字。这些将添加到我们当前文件的末尾。
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
行之前添加这些条件语句。
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循环会继续循环执行一段代码,只要while
语句中设置的条件为True。
从这里,你可以继续阅读有关for循环和break、continue和pass语句的教程,来继续学习循环。## 结论
本教程介绍了在 Python 中 while
循环的工作原理以及如何构建它们。While 循环会在 while
语句中设置的条件为 True 时继续循环执行一段代码块。