如何在 Python 3 中使用 while 循环

简介

计算机程序非常适合用于自动化和重复任务,这样我们就不必亲自执行。通过使用循环的一种方式来重复类似的任务。在本教程中,我们将介绍 Python 的while循环

while循环根据给定的布尔条件实现代码的重复执行。在while块中的代码将在while语句评估为True时执行。

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

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

先决条件

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

While循环

在 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循环的一般原理,让我们创建一个使用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 时继续循环执行一段代码块。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张无忌打怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值