如何在 Python 3 中使用条件语句

简介

条件语句是每种编程语言的一部分。通过条件语句,我们可以编写有时运行有时不运行的代码,具体取决于程序在那个时间点的条件。

当我们完全执行程序的每个语句时,按顺序从顶部到底部移动,我们并没有要求程序评估特定的条件。通过使用条件语句,程序可以确定是否满足某些条件,然后告诉程序接下来该做什么。

让我们回顾一些我们会使用条件语句的例子:

  • 如果学生的考试成绩超过65%,报告她的成绩通过;如果没有,报告她的成绩不通过
  • 如果他的账户里有钱,计算利息;如果没有,收取罚款
  • 如果他们购买了10个或更多的橙子,计算5%的折扣;如果购买的少于10个,则不计算折扣

通过评估条件并根据是否满足这些条件来分配要运行的代码,我们正在编写条件代码。

本教程将带领您学习如何在 Python 编程语言中编写条件语句。

先决条件

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

If 语句

我们将从 if 语句开始,它将评估一个语句是否为真或假,并仅在该语句为真的情况下运行代码。

在纯文本编辑器中,打开一个文件并编写以下代码:

grade = 70

if grade >= 65:
    print("Passing grade")

通过这段代码,我们有一个名为 grade 的变量,并给它赋予整数值 70。然后我们使用 if 语句来评估变量 grade 是否大于或等于 65。如果满足这个条件,我们告诉程序打印字符串 Passing grade

将程序保存为 grade.py 并在终端窗口中使用命令 python grade.py 在本地编程环境中运行它。

在这种情况下,成绩为 70 满足大于或等于 65 的条件,因此一旦运行程序,您将收到以下输出:

Passing grade

现在让我们通过将 grade 变量的值更改为 60 来改变此程序的结果:

grade = 60

if grade >= 65:
    print("Passing grade")

当我们保存并运行代码时,我们将不会收到任何输出,因为条件满足,我们也没有告诉程序执行另一个语句。

再举一个例子,让我们计算银行账户余额是否低于0。让我们创建一个名为 account.py 的文件,并编写以下程序:

balance = -5

if balance < 0:
    print("Balance is below 0, add funds now or you will be charged a penalty.")

当我们使用 python account.py 运行程序时,我们将收到以下输出:

Balance is below 0, add funds now or you will be charged a penalty.

在程序中,我们使用值 -5 初始化了变量 balance,这个值小于0。由于余额满足 if 语句的条件(balance < 0),一旦我们保存并运行代码,我们将收到字符串输出。同样,如果我们将余额更改为0或正数,我们将不会收到任何输出。

Else 语句

很可能我们希望程序在 if 语句评估为假时也执行某些操作。在我们的成绩示例中,我们希望输出成绩是否通过或不通过。

为了实现这一点,我们将在上面的成绩条件中添加一个 else 语句,构造如下:

grade = 60

if grade >= 65:
    print("Passing grade")

else:
    print("Failing grade")

由于上面的成绩变量的值为 60if 语句评估为假,因此程序不会打印出 Passing grade。随后的 else 语句告诉程序无论如何都要执行某些操作。

当我们保存并运行程序时,我们将收到以下输出:

Failing grade

如果我们将程序重写为给定值为 65 或更高的成绩,我们将收到 Passing grade 的输出。

要在银行账户示例中添加一个 else 语句,我们将代码重写为:

balance = 522

if balance < 0:
    print("Balance is below 0, add funds now or you will be charged a penalty.")

else:
    print("Your balance is 0 or above.")
Your balance is 0 or above.

在这里,我们将 balance 变量的值更改为正数,因此 else 语句将打印。要使第一个 if 语句打印,我们可以将值重写为负数。

通过将 if 语句与 else 语句结合,您正在构建一个两部分的条件语句,告诉计算机无论 if 条件是否满足,都要执行某些代码。

Else if 语句

到目前为止,我们已经介绍了条件语句的布尔选项,每个 if 语句都会评估为真或假。在许多情况下,我们希望程序评估超过两种可能的结果。为此,我们将使用一个else if语句,在 Python 中写作 elifelif 或 else if 语句看起来像 if 语句,并将评估另一个条件。

在银行账户程序中,我们可能希望对三种不同情况有三种离散的输出:

  • 余额低于0
  • 余额等于0
  • 余额高于0

elif 语句将放置在 if 语句和 else 语句之间,如下所示:

. . .
if balance < 0:
    print("Balance is below 0, add funds now or you will be charged a penalty.")

elif balance == 0:
    print("Balance is equal to 0, add funds soon.")

else:
    print("Your balance is 0 or above.")

现在,一旦我们运行程序,可能会出现三种可能的输出:

  • 如果变量 balance 等于 0,我们将收到 elif 语句的输出(Balance is equal to 0, add funds soon.
  • 如果变量 balance 设置为正数,我们将收到 else 语句的输出(Your balance is 0 or above.)。
  • 如果变量 balance 设置为负数,输出将是 if 语句的字符串(Balance is below 0, add funds now or you will be charged a penalty)。

但是,如果我们想要有更多的可能性怎么办?我们可以通过在代码中编写多个 elif 语句来实现这一点。

grade.py 程序中,让我们重写代码,以便有几个字母等级对应于一定范围的数字等级:

  • 90或以上相当于 A 等级
  • 80-89 相当于 B 等级
  • 70-79 相当于 C 等级
  • 65-69 相当于 D 等级
  • 64或以下相当于 F 等级

要运行此代码,我们将需要一个 if 语句,三个 elif 语句和一个处理所有不及格情况的 else 语句。

让我们重写上面的示例代码,以便打印出每个字母等级的字符串。我们可以保持 else 语句不变。

. . .
if grade >= 90:
    print("A grade")

elif grade >=80:
    print("B grade")

elif grade >=70:
    print("C grade")

elif grade >= 65:
    print("D grade")

else:
    print("Failing grade")

由于 elif 语句将按顺序评估,我们可以保持我们的语句相当基本。此程序正在完成以下步骤:

  1. 如果成绩大于90,程序将打印 A grade,如果成绩小于90,程序将继续下一个语句…
  2. 如果成绩大于或等于80,程序将打印 B grade,如果成绩为79或更低,程序将继续下一个语句…
  3. 如果成绩大于或等于70,程序将打印 C grade,如果成绩为69或更低,程序将继续下一个语句…
  4. 如果成绩大于或等于65,程序将打印 D grade,如果成绩为64或更低,程序将继续下一个语句…
  5. 程序将打印 Failing grade,因为上述所有条件都未满足。

嵌套的 If 语句

一旦您对 ifelifelse 语句感到满意,您可以继续使用嵌套的条件语句。我们可以使用嵌套的 if 语句来检查第一个条件是否为真,如果第一个条件为真,则检查第二个条件。为此,我们可以在另一个 if-else 语句内部有一个 if-else 语句。让我们看一下嵌套 if 语句的语法:

if statement1:				#外部 if 语句
    print("true")

    if nested_statement:	#嵌套 if 语句
        print("yes")

    else:					#嵌套 else 语句
        print("no")

else:						#外部 else 语句
    print("false")

这段代码可能会产生几种可能的输出:

  • 如果 statement1 评估为真,程序将评估 nested_statement 是否也为真。如果两种情况都为真,输出将是:
true
yes
  • 然而,如果 statement1 评估为真,但 nested_statement 评估为假,输出将是:
true
no
  • 如果 statement1 评估为假,嵌套的 if-else 语句将不会运行,因此只有 else 语句将单独运行,输出将是:
false

我们还可以在代码中嵌套多个 if 语句:

if statement1:					#外部 if 
    print("hello world")

    if nested_statement1:		#第一个嵌套 if 
        print("yes")

    elif nested_statement2:		#第一个嵌套 elif
        print("maybe")

    else:						#第一个嵌套 else
        print("no")

elif statement2:				#外部 elif
    print("hello galaxy")

    if nested_statement3:		#第二个嵌套 if
        print("yes")

    elif nested_statement4:		#第二个嵌套 elif
        print("maybe")

    else:						#第二个嵌套 else
        print("no")

else:							#外部 else
    statement("hello universe")

在上面的代码中,每个 if 语句内部都有一个嵌套的 if 语句,还有一个 elif 语句。这将允许在每个条件内有更多的选项。

让我们看一个嵌套 if 语句的示例,使用我们的 grade.py 程序。我们可以首先检查成绩是否及格(大于或等于65%),然后评估数值成绩应该等同于哪个字母等级。但是,如果成绩不及格,我们就不需要运行字母等级的判断,而是可以让程序报告成绩不及格。我们带有嵌套 if 语句的修改后的代码如下:

. . .
if grade >= 65:
    print("Passing grade of:")

    if grade >= 90:
        print("A")

    elif grade >=80:
        print("B")

    elif grade >=70:
        print("C")

    elif grade >= 65:
        print("D")

else:
    print("Failing grade")

如果我们使用整数值 92 设置变量 grade 运行代码,第一个条件将满足,程序将打印出 Passing grade of:。接下来,它将检查成绩是否大于或等于90,由于这个条件也满足,它将打印出 A

如果我们使用 grade 变量设置为 60 运行代码,那么第一个条件不会满足,因此程序将跳过嵌套的 if 语句,转而执行 else 语句,程序将打印出 Failing grade

当然,我们可以添加更多的选项,并使用第二层嵌套的 if 语句。也许我们想要分别评估 A+、A 和 A- 的成绩。我们可以通过首先检查成绩是否及格,然后检查成绩是否大于96来实现这一点,例如:

. . .
if grade >= 65:
    print("Passing grade of:")

    if grade >= 90:
        if grade > 96:
            print("A+")

        elif grade > 93 and grade <= 96:
            print("A")

        elif grade >= 90:
            print("A-")
. . .

在上面的代码中,对于 grade 变量设置为 96,程序将执行以下步骤:

  1. 检查成绩是否大于或等于65(true)
  2. 打印 Passing grade of:
  3. 检查成绩是否大于或等于90(true)
  4. 检查成绩是否大于96(false)
  5. 检查成绩是否大于93且小于或等于96(true)
  6. 打印 A
  7. 离开这些嵌套的条件语句,并继续执行剩余的代码

因此,对于成绩为96的程序输出如下:

Passing grade of:
A

嵌套的 if 语句可以为您的代码提供添加多个特定条件级别的机会。

结论

通过使用诸如 if 语句这样的条件语句,您将能够更好地控制程序的执行流程。条件语句告诉程序要评估特定条件是否被满足。如果条件被满足,它将执行特定的代码,但如果条件不被满足,程序将继续执行其他代码。

要继续练习条件语句,可以尝试使用不同的操作符,将操作符与 andor 结合使用,并将条件语句与循环结合使用。