介绍
条件声明是每个编程语言的一部分,有条件声明,我们可以有代码,有时运行,有时不运行,取决于该程序当时的条件。
当我们完全执行一个程序的每个陈述时,从顶部移动到底部,每个行按顺序执行,我们并不要求该程序评估特定条件。
让我们看看一些我们使用条件陈述的例子:
- 如果学生在考试中获得超过65%,报告她的成绩通过;如果没有,报告她的成绩失败 *如果他有钱在他的帐户中,计算利息;如果他没有,收取罚款费 *如果他们购买10个橙子或更多,计算5%的折扣;如果他们购买更少,那么不要
通过评估条件并根据这些条件是否满足而分配运行代码,我们正在编写条件代码。
本教程将带您通过在Python编程语言中编写条件声明。
前提条件
如果您没有设置编程环境,您可以参考本地编程环境的安装和安装指南(https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3)或适用于您的操作系统(Ubuntu, CentOS, Debian 等)的编程环境(https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment)。
如果声明
我们将从如果
声明开始,它将评估一个声明是否是真实的或错误的,并且只在声明是真实的情况下运行代码。
<$>[info]
信息: 要跟进本教程中的示例代码,请在本地系统上运行python3
命令,打开Python交互壳。
在简单的文本编辑器中,打开一个文件并写下以下代码:
1grade = 70
2
3if grade >= 65:
4 print("Passing grade")
有了这个代码,我们有变量级别
并给它70
的整数值,然后我们使用如果
陈述来评估变量级别是否大于或等于(>=
)到65
。
将该程序保存为grade.py
,并使用命令python grade.py
在 从终端窗口的本地编程环境中运行。
在这种情况下,70 does 等级符合大于或等于 65 的条件,因此在运行程序后,您将收到以下输出:
1[secondary_label Output]
2Passing grade
现在让我们通过将级别
变量值更改为60
来改变这个程序的结果:
1[label grade.py]
2grade = 60
3
4if grade >= 65:
5 print("Passing grade")
当我们保存并运行 this 代码时,我们不会收到任何输出,因为条件是 not 满足的,我们没有告诉程序执行另一个陈述。
再举一个例子,让我们计算一下银行账户余额是否低于0,然后创建一个名为account.py
的文件,然后写下以下程序:
1[label account.py]
2balance = -5
3
4if balance < 0:
5 print("Balance is below 0, add funds now or you will be charged a penalty.")
当我们使用python account.py运行该程序时,我们将收到以下输出:
1[secondary_label Output]
2Balance is below 0, add funds now or you will be charged a penalty.
在程序中,我们将变量平衡
初始化为-5
的值,这小于0。由于平衡满足了如果
陈述(平衡 < 0
)的条件,一旦我们保存并运行代码,我们将收到字符串输出。
其他声明
很可能我们会希望程序做一些事情,即使一个如果
陈述被评估为错误,在我们的分级示例中,我们将想要输出是否分级通过或失败。
要做到这一点,我们将添加一个else
声明,以此构建如下等级条件:
1[label grade.py]
2grade = 60
3
4if grade >= 65:
5 print("Passing grade")
6
7else:
8 print("Failing grade")
由于上述等级变量有60
的值,因此如果
声明被评估为错误,因此程序不会打印通过等级
。
当我们保存并运行程序时,我们将收到以下输出:
1[secondary_label Output]
2Failing grade
然后,如果我们重写程序以给评级一个值为65
或更高,我们将获得输出通过评级
。
为了在银行账户示例中添加一个else
声明,我们将代码重写如下:
1[label account.py]
2balance = 522
3
4if balance < 0:
5 print("Balance is below 0, add funds now or you will be charged a penalty.")
6
7else:
8 print("Your balance is 0 or above.")
1[secondary_label Output]
2Your balance is 0 or above.
在这里,我们将平衡
变量值更改为正数,以便else
陈述打印。
通过将如果
声明与else
声明相结合,您正在构建一个两个部分的条件声明,该声明会告诉计算机执行某些代码,无论如果
条件是否满足。
另一个如果声明
到目前为止,我们已经提出了一个布尔语的条件陈述选项,每个如果
陈述评估为真或假。在许多情况下,我们将想要一个程序,评估两个以上可能的结果。
在银行账户程序中,我们可能希望为三个不同的情况有三个不对称的输出:
- 余额低于 0
- 余额等于 0
- 余额高于 0
elif
声明将如下放置在if
声明和else
声明之间:
1[label account.py]
2. . .
3if balance < 0:
4 print("Balance is below 0, add funds now or you will be charged a penalty.")
5
6elif balance == 0:
7 print("Balance is equal to 0, add funds soon.")
8
9else:
10 print("Your balance is 0 or above.")
现在,有三种可能发生的输出,一旦我们运行该程序:
- 如果
平衡
变量等于0
,我们将从平衡
陈述中获取输出(平衡等于0
,即时添加资金) *如果平衡
变量设置为正数,我们将从else
陈述中获取输出(您的平衡为0或以上
)。
但是,如果我们想要有三个以上的可能性,我们可以通过在我们的代码中写入多个elif
声明来做到这一点。
在grade.py
程序中,让我们重写代码,以便有几个字母等级对应于数字等级的范围:
- 90 或以上等同于 A 级
- 80-89 等同于 B 级
- 70-79 等同于 C 级
- 65-69 等同于 D 级
- 64 或以下等同于 F 级
要运行此代码,我们需要一个如果
声明,三个elif
声明,以及一个else
声明,以处理所有失败案例。
让我们从上面的例子中重写代码,以获得打印每个字母等级的字符串,我们可以保持我们的else
陈述相同。
1[label grade.py]
2. . .
3if grade >= 90:
4 print("A grade")
5
6elif grade >=80:
7 print("B grade")
8
9elif grade >=70:
10 print("C grade")
11
12elif grade >= 65:
13 print("D grade")
14
15else:
16 print("Failing grade")
由于elif
声明会按顺序进行评估,我们可以保持我们的声明相当基本,该程序正在完成以下步骤:
如果等级大于90,程序会打印A级
,如果等级小于90,程序会继续到下一个陈述...
2.如果等级大于或等于80,程序会打印B级
,如果等级小于79,程序会继续到下一个陈述...
3.如果等级大于或等于70,程序会打印C级
,如果等级小于69,程序会继续到下一个陈述...
4.如果等级大于或等于65,程序会打印D级
,如果等级小于64,程序会继续到下一个陈述...
5.程序会打印失败级
,因为上述所有条件都没有满足
如果发表声明
一旦你对如果
,elif
和else
的陈述感到舒适,你可以转向嵌入的条件陈述。我们可以使用嵌入的如果
陈述用于我们想要检查第一个条件执行为真实的次要条件的情况。
1if statement1: #outer if statement
2 print("true")
3
4 if nested_statement: #nested if statement
5 print("yes")
6
7 else: #nested else statement
8 print("no")
9
10else: #outer else statement
11 print("false")
一些可能的输出可以从这个代码中产生:
- 如果'statement1' 评估为 true,则程序会评估 'nested_statement' 是否也评估为 true. 如果两种情况都是 true,则输出将是:
1[secondary_label Output] 2true 3yes
- 但是,如果'statement1' 评估为 true,但 'nested_statement' 评估为 false,则输出将是:
1[secondary_label Output] 2true 3no
- 如果
陈述1
评估为假,嵌入的 if-else 陈述将不会运行,因此else
陈述将单独运行,输出将是:
1[secondary_label Output] 2false
我们也可以在我们的代码中嵌入多个如果
陈述:
1if statement1: #outer if
2 print("hello world")
3
4 if nested_statement1: #first nested if
5 print("yes")
6
7 elif nested_statement2: #first nested elif
8 print("maybe")
9
10 else: #first nested else
11 print("no")
12
13elif statement2: #outer elif
14 print("hello galaxy")
15
16 if nested_statement3: #second nested if
17 print("yes")
18
19 elif nested_statement4: #second nested elif
20 print("maybe")
21
22 else: #second nested else
23 print("no")
24
25else: #outer else
26 statement("hello universe")
在上面的代码中,除了elif
陈述之外,每个if
陈述内部还有一个嵌入的if
陈述,这将允许每个条件内提供更多的选项。
让我们看看我们的grade.py
程序中嵌入的如果
陈述的一个例子。我们可以检查一个等级是否先通过(大于或等于65%),然后评估数字等级应等于哪个字母等级。
1[label grade.py]
2. . .
3if grade >= 65:
4 print("Passing grade of:")
5
6 if grade >= 90:
7 print("A")
8
9 elif grade >=80:
10 print("B")
11
12 elif grade >=70:
13 print("C")
14
15 elif grade >= 65:
16 print("D")
17
18else:
19 print("Failing grade")
如果我们运行代码以变量级别
设置为整数值92
,那么第一个条件就会满足,然后程序会打印出通过级别的:
。
如果我们运行代码的级别
变量设置为60
,那么第一个条件没有满足,所以程序会跳过嵌入的如果
陈述,并移动到else
陈述,并打印出失败级别
。
当然,我们可以为此添加更多的选项,并使用第二层嵌入式如果声明。也许我们会想要单独评估A+,A和A级。我们可以这样做,首先检查等级是否通过,然后检查等级是否为90或以上,然后检查等级是否超过96的A+,例如:
1[label grade.py]
2. . .
3if grade >= 65:
4 print("Passing grade of:")
5
6 if grade >= 90:
7 if grade > 96:
8 print("A+")
9
10 elif grade > 93 and grade <= 96:
11 print("A")
12
13 elif grade >= 90:
14 print("A-")
15. . .
在上面的代码中,对于一个级别
变量设置为96
,该程序将运行如下:
检查是否大于或等于65(真)
2 打印通过级别:
3 检查是否大于或等于90(真)
4 检查是否大于96(假)
5 检查是否大于93以及小于或等于96(真)
6 打印A
7 留下这些嵌入的条件声明并继续使用剩余的代码
因此,96级程序的结果看起来如下:
1[secondary_label Output]
2Passing grade of:
3A
嵌入的如果
语句可以为您的代码添加几个特定的条件级别。
结论
通过使用条件陈述,如如果
陈述,你将对你的程序所执行的内容有更大的控制权。条件陈述告诉程序评估是否满足某种条件。
要继续练习条件式陈述,请尝试使用不同的操作员(https://andsky.com/tech/tutorials/how-to-do-math-in-python-3-with-operators),将操作员与and
或or
相结合,并使用条件式陈述旁边的 环节。