阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


Day13:elif 语句

条件语句赋予我们在程序中做决策的能力,但目前为止,我们只看到了它能力的冰山一角。今天我们开始学习 elif 语句,它们赋予我们基于条件分别运行代码块的能力,它们也被称为“else if 语句”。

跟着今天的课程,让我们在之前的"Week_03"文件中最下面增加一个单元格并标注“Elif Statements”.

运行原理

在前面的课程我们学到,条件语句赋予我们在程序中做决策的能力,接下来学习如何进行多项决策。在 Python 中,我们使用 elif 语句基于提供的条件做另一项决策。elif 语句必须结合 if 语句使用,意味着你不能脱离 if 去单独创建一个 elif 语句。Python 由上到下处理代码,所以它先处理 if 语句,如果 if 语句不成立,它再继续处理第一个 elif 语句去检查它的条件。如果条件仍然不成立,python继续执行下个一条件语句直到所有条件语句都检查完毕。然后,一旦有一个条件语句成立,其他所有的条件语句都会被跳过,即使它们的条件成立。它运行的机制是只在第一个成立的条件时运行对应的代码块。

写下你的第一个 Elif 语句

创建一个跟 if 语句一模一样的 elif 语句,有一点不同,就是使用关键词 elif 替代if。你就可以使用 elif 处理多个条件。让我们试试:

# 使用elif条件语句
x, y = 5, 10
if x > y:
    print("x is greater")
elif x < y:
    print("x is less")

在单元格中运行如上代码。输出结果为“x is less”。它首先检查if语句,但if条件不成立,继续检查elif条件语句,语句成立,elif中的代码得以运行。

检查多个elif条件

有能力基于一个变量写多条决策是必须的,这是elif语句存在的原因。例如如下代码:

# checking more than one elif conditional statement
x, y = 5, 10
if x > y:
    print("x is greater")
elif (x + 10) < y: # checking if 15 is less than 10
    print("x is less")
elif (x + 5) == y: # checking if 10 is equal to 10
    print("equal")

在单元格中运行如上代码,输出结果为“相等”。第一个if语句和elif语句都不成立,但第二个elif语句成立,这就是对应代码块运行的原因。你想写多少个elif语句就可以写多少个,但它们必须与if语句结合在一起。

注意 在条件里,我们应用了加法,但我们将加法括起来以便程序先执行数学运算。

条件中嵌套条件

我们已经掌握如何在python中使用缩排去分隔代码块。目前为止,我们只使用了一个缩排等级,但如果我们在if语句中添加一个if语句呢?

# writing multiple conditionals within each other - multiple block levels
x, y, z = 5, 10, 5
if x > y:
    print("greater")
elif x <= y:
    if x == z:
        print("x is equal to z") # resulting output
    elif x != z:
        print("x is not equal to z") # won't get hit

在单元格中运行如上代码,输出为“x is equal to z”。分解这段代码,第一个if语句不成立,接下来的elif语句成立,所以运行对应的代码块。进入到代码块中是另一条件语句,所以先检查if语句,条件成立,然后运行对应模块里面的代码。

if语句对比elif语句

你即将要理解的是使用elif语句和使用多个if语句最大的区别,所有elif语句都跟一个原始if语句连接在一起。所以一旦有一个条件语句成立,其余的条件语句都不会执行,让我们看一个例子:

# testing output of two if statements in a row that are both true
# 在一行中测试两个都成立的if语句
x, y, z = 5, 10, 5
if x < y:

    print("x is less")
if x == z:
    print("x is equal")

在单元格中运行如上代码,我们发现两个打印语句都输出了结果,这是由于这代码里有2个if语句。这些if语句没有关联起来,它们是独立的条件语句,不同于elif总是关联着if。

# testing output of an if and elif statement that are both true
# 测试if和elif条件都成立时的输出
x, y, z = 5, 10, 5
if x < y:
print("x is less")
elif x == z:
print("x is equal to z")

在单元格中运行如上代码,我们发现到这里的输出只有“x is less”,没有包含第二个打印语句。这是因为elif是if语句的附属,一旦一个条件成立,其他条件都将被跳过即使它们本身都成立。

练习 1. 高于/低于:请求用户输入一个数字并是使用if/elif语句去打印它是高于100还是低于100. 2. 找到解决方案:在如下给出的代码里,修正一个或者所有错误,已实现输出“Lower”:

x, y = 5, 10
if x > y:
print("greater")
try x < y:
print("lower")

今天学习了在创建程序的下一步就是做决策,不仅仅是一个决策,而是多个。

上一篇:Day12
下一篇:Day14