Python IfElseElif条件语句

原文:https://www.studytonight.com/python/conditional-statements

在上一个教程中,我们学习了逻辑表达式和关系表达式,并试图借助各种例子来理解它们的用法。我们还看到了如何借助逻辑运算符将多个关系表达式组合在一起以创建有意义的逻辑表达式的例子。

我们还提到了如何使用这些逻辑和关系表达式来控制执行流程。

在本节中,我们将学习更多控制执行流程的方法。在编程中,有两种方法可以实现这一点,它们被称为条件语句循环

在本教程中,我们将讨论条件语句,所以让我们开始。


条件语句

在编写程序时会有各种各样的情况,这时你必须注意程序执行时可能出现的不同情况。在这种情况下,可以使用if条件。

if条件

使用if关键字的语法如下:

if [conditional expression]:
    [statement(s) to execute]

if关键字,条件表达式以冒号结束。在【条件表达式】中引入了一些条件表达式,这些条件表达式应该返回一个布尔值,即TrueFalse。如果结果值为True,则执行【要执行的语句】,这在带有 tabspaceif条件下提到(这个缩进非常重要)。

举一个现实生活中的例子,假设在一个储蓄银行账户中,用户 A 有 1000 卢比。用户 A 访问自动取款机,从他的储蓄账户中取款。现在处理自动柜员机交易的程序应该能够在每种情况下执行,就像程序应该知道用户的银行账户余额一样,不应该允许用户提取超过其账户可用余额的资金。此外,一旦用户从账户中取款,程序必须更新账户余额,以保持记录的更新。让我们写一小段代码来阻止用户提取超过可用账户余额的钱。

>>> savingAmt = 1000
>>> withdrawAmt = int(input("Amount to Withdraw: "));
>>> if withdrawAmt > savingAmt:
        print ("Insufficient balance");

提取金额:2000 余额不足

在上面的程序中,如果用户输入任何超过卢比的金额。1000 时,屏幕上会显示一条消息,说明“资金不足”。

还有两个关键词是可选的,但可以伴随if语句,它们是:

  • else
  • elif(也称为 else if)

else条件

说到else,我们先来看看它是如何与if语句并列使用的。

if[conditional expression]:
    [statement to execute]
else:
    [alternate statement to execute]

继续银行账户-自动取款机的例子,如果你在上面的程序中注意到,我们忘记从储蓄账户余额中减去提取的金额。既然现在我们有了一个额外的else条件可以使用,我们可以打印一条警告信息,如果储蓄金额小于提取金额,则显示“余额不足”,否则我们可以从储蓄账户金额中减去提取金额来更新账户余额。所以前面例子中写的if条件,会得到一个额外的else块。

if withdrawAmt > savingAmt:
    print ("Insufficient balance");
else:
    savingAmt = savingAmt - withdrawAmt
    print ("Account Balance:" + str(savingAmt));

引入else块,如果有足够的余额,将从savingAmt中减去withdrawAmt,更新后的账户余额将显示在屏幕上。

有了ifelse,现在我们可以将执行流程分成两个不同的方向。在储蓄账户的情况下,只有两种情况,你有足够的钱或者没有,但是如果我们遇到两种以上的情况呢?在这种情况下,我们使用另一个伴随着ifelse语句的语句,称为elif(或者如果用恰当的英语)。


elif条件

elif语句添加在ifelse区块之间。

if[condition #1]:
    [statement #1]
elif[condition #2]:
    [statement #2]
elif[condition #3]:
    [statement #3]
else:
    [statement when if and elif(s) are False]

有了这个,你可以根据可能出现的可能性添加任意多的elif块。

假设给你一个时间,你必须告诉它是一天中的哪个阶段——(早上、中午、下午、晚上或晚上)。你必须对照 5 个阶段中每个阶段所处的多个时间范围来检查给定的时间。因此,以下条件:

  1. 上午 : 0600 至 1159
  2. 中午 : 1200
  3. 下午 : 1201 到 1700
  4. 晚上 : 1701 到 2000
  5. 夜间 : 2000 到 0559

下面我们有一个简单的程序,使用ifelifelse条件语句:

if (time >= 600) and (time < 1200):
    print ("Morning");
elif (time == 1200):
    print ("Noon");
elif (time > 1200) and (time <= 1700):
    print ("Afternoon");
elif (time > 1700) and (time <= 2000):
    print ("Evening");
elif ((time > 2000) and (time < 2400)) or ((time >= 0) and (time < 600)):
    print ("Night");
else:
    print ("Invalid time!");

请注意程序中每个条件中使用的逻辑运算符,这个例子演示了如何在 if-else 语句中使用它们。


嵌套 if-else 语句

简单地说,嵌套if else意味着您将在另一个 if-else 语句中编写 if-else 语句。在句法上,

if[condition #1]:
    if[condition #1.1]:
        [statement to exec if #1 and #1.1 are true]
    else:
        [statement to exec if #1 and #1.1 are false]
else:
    [alternate statement to execute]

不用说,你也可以在一个else块里面写同样的 if-else 块。或者实际上你可以根据自己的需要增加一个elif条件。尽管如果你仔细想想,嵌套的 if-else 实际上是elif的一个替代物。就像我们创建了一个通过检查时间范围来打印一天的相位的程序一样,这也可以在不使用elif的情况下完成,只需嵌套ifelse

if (time >= 600) and (time < 1200):
    print ("Morning");
else:
    if (time == 1200):
        print ("Noon");
    else:
        if (time > 1200) and (time <= 1700):
            print ("Afternoon");
        else:
            if (time > 1700) and (time <= 2000):
                print ("Evening");
            else:
                if ((time > 2000) and (time < 2400)) or ((time >= 0) and (time < 600)):
                    print ("Night");
                else:
                    print ("Invalid time!");

正如你在上面的程序中所看到的,我们所做的只是,我们从给if块添加一个条件开始,然后在它的else块中使用另一个if-else块。我们继续筑巢,直到所有的条件都解决了。不过,这比使用 elif 要繁琐一点。然而,这还不是全部。嵌套在其他各种情况下非常有用,在某些情况下,这是唯一的前进方向。

另外,如果你在解释if语句时还记得我们的第一个例子,储蓄银行账户的例子。实际上有一种更快的方法,一行的方法,因为它是 python。逻辑如下:

如果(保存>提取)则保存=(保存-提取),否则保存将保持原样,不会有任何交易。

>>> savingAmt = savingAmt - withdrawAmt if (savingAmt > withdrawAmt) else savingAmt