条件语句是每种编程语言的一部分。通过条件语句,我们可以编写有时运行有时不运行的代码,具体取决于程序在那个时间点的条件。
当我们完全执行程序的每个语句时,按顺序从顶部到底部移动,我们并没有要求程序评估特定的条件。通过使用条件语句,程序可以确定是否满足某些条件,然后告诉程序接下来该做什么。
让我们回顾一些我们会使用条件语句的例子:
通过评估条件并根据是否满足这些条件来分配要运行的代码,我们正在编写条件代码。
本教程将带领您学习如何在 Python 编程语言中编写条件语句。
您应该已经安装了 Python 3,并在计算机或服务器上设置了编程环境。如果您还没有设置编程环境,可以参考适用于您操作系统(Ubuntu、CentOS、Debian等)的本地编程环境或服务器编程环境的安装和设置指南。
我们将从 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或正数,我们将不会收到任何输出。
很可能我们希望程序在 if
语句评估为假时也执行某些操作。在我们的成绩示例中,我们希望输出成绩是否通过或不通过。
为了实现这一点,我们将在上面的成绩条件中添加一个 else
语句,构造如下:
grade = 60
if grade >= 65:
print("Passing grade")
else:
print("Failing grade")
由于上面的成绩变量的值为 60
,if
语句评估为假,因此程序不会打印出 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
条件是否满足,都要执行某些代码。
到目前为止,我们已经介绍了条件语句的布尔选项,每个 if
语句都会评估为真或假。在许多情况下,我们希望程序评估超过两种可能的结果。为此,我们将使用一个else if语句,在 Python 中写作 elif
。elif
或 else if 语句看起来像 if
语句,并将评估另一个条件。
在银行账户程序中,我们可能希望对三种不同情况有三种离散的输出:
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
程序中,让我们重写代码,以便有几个字母等级对应于一定范围的数字等级:
要运行此代码,我们将需要一个 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
语句将按顺序评估,我们可以保持我们的语句相当基本。此程序正在完成以下步骤:
A grade
,如果成绩小于90,程序将继续下一个语句…B grade
,如果成绩为79或更低,程序将继续下一个语句…C grade
,如果成绩为69或更低,程序将继续下一个语句…D grade
,如果成绩为64或更低,程序将继续下一个语句…Failing grade
,因为上述所有条件都未满足。一旦您对 if
、elif
和 else
语句感到满意,您可以继续使用嵌套的条件语句。我们可以使用嵌套的 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
,程序将执行以下步骤:
Passing grade of:
A
因此,对于成绩为96的程序输出如下:
Passing grade of:
A
嵌套的 if
语句可以为您的代码提供添加多个特定条件级别的机会。
通过使用诸如 if
语句这样的条件语句,您将能够更好地控制程序的执行流程。条件语句告诉程序要评估特定条件是否被满足。如果条件被满足,它将执行特定的代码,但如果条件不被满足,程序将继续执行其他代码。
要继续练习条件语句,可以尝试使用不同的操作符,将操作符与 and
或 or
结合使用,并将条件语句与循环结合使用。