Skip to content

分支语句 if

分支语句-if

什么是分支语句

在生活中,总是要做出许多选择。

比如在学习的时候有文科和理科区分,对应的学生们就有擅长、喜欢文科和擅长、喜欢理科的。

针对于不同的擅长、喜欢的方向在将来也有不同的职业发展,擅长、喜欢文科可能以后的择业就会偏向历史、地理等。

而擅长、欢理科的可能以后的择业方向就有数学、生物、编程(软件)等等方向;

在大方向的选择之后还有更细粒度的选择方向,拿大家学习的软件从业来讲,还有软件测试、软件开发、产品和项目经理等方向可供选择。

程序也是一样。下面给出几个常见的例子:

  • 如果购买商品成功,用户余额减少,用户积分增多。
  • 如果输入的用户名和密码正确,提示登录成功,进入网站,否则,提示登录失败。
  • 如果用户使用微信登录,则使用微信扫一扫;如果使用 QQ 登录,则输入 QQ 号和密码; 如果使用微博登录,则输入微博账号和密码;如果使用手机号登录,则输入手机号和验证码。

以上不同场景下做出的不同行为,就是程序中的选择语句,也称为条件语句,即按照条件选择执行不同 的代码片段。

Python 中选择语句主要有 3 种形式,分别为 if 语句、if…else 语句和 if…elif…else 多分支语句。

if 条件判断

Python 中使用 if 关键字实现选择语句,其最简单的语法形式如下:

if 表达式: 
    语句块

其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如, 是否是测试工程师)。

如果表达式的值为真,则执行 测试工程师 的打印;如果表达式的值为假,就跳过 语句块,继续执行后面的语句。这种形式的 if 语句相当于汉语里的 如果……就……,其流 程图如下所示。

uml diagram

把以上流程转换成为Python代码

student = "测试工程师"

if student == "测试工程师":
    print("测试工程师")

print("学测试\n认准霍格沃兹测试开发")

if...else 判断语句

如果遇到只能二选一的条件,Python 中提供了 if…else 语句解决类似问题,其语法格式如下:

if 表达式: 
    语句块1
else:
    语句块2

使用 if…else 语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如判断 school 是否为 hogwarts)。

如果满足条件,则执行 if 后面的语句块(打印霍格沃兹测试开发),否则,执行 else 后面的语句块(打印测试开发)。

这种形式的选择语句相当于汉语里的 如果……否则……,其流程图如图所示。

uml diagram

把以上流程转换成为 Python 代码

student = "测试工程师"
school = "hogwarts"

if school == "hogwarts":
    print("霍格沃兹测试开发")
else:
    print("测试开发")

if...elif...else 多重条件

网上购物时,通常都有多种付款方式以供选择,比如支付宝支付、银联支付、微信支付等等。这时用户就需要从多个选项中选择一个。

在开发程序时,如果遇到多选一的情况,则可以使用 if…elif…else 语句。

该语句是一个多分支选择语句,通常表现为 如果满足某种条件,进行某种处理,否则,如果满足另一种条件,则执行另一种处理……

if…elif…else 语句的语法格式如下:

if 表达式: 
    语句块1
elif 表达式: 
    语句块2 
...
else:
    语句块n

使用 if…elif…else 语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如判断 food 是否为 apple)。

如果满足条件,则执行 if 后面的语句块(打印苹果),如果表达式为假,就跳过第一个语句块,进行第二个表达式的执行(例如判断 food 是否为 banana)。

如果第二个表达式满足条件,则执行 elif 后面的语句块(打印香蕉),如果第二个表达式为假,就跳过第二个语句块,进行第三个表达式的执行(例如判断 food 是否为 orange)。

如果三个表达式满足条件,则执行 elif 后面的语句块(打印橘子),如果三个表达式为假,就跳过第三个语句块,执行 else 后面的语句块。

只有在所有表达式都为假的情况下,才会执行 else 中的语句。

这种形式的选择语句相当于汉语里的 如果……如果……否则……,其流程图如图所示。

uml diagram

把以上流程转换成为 Python 代码

food = input("请输入水果的类型:\n")

if food == "apple":
    print("你输入的是苹果")
elif food == "banana":
    print("你输入的是香蕉")
elif food == "orange":
    print("你输入的是橘子")
else:
    print("你触及了我翻译的盲区了:(")

分支嵌套

前面介绍了 3 种形式的 if 选择语句,这 3 种形式的选择语句之间都可以进行互相嵌套。例如,在最简单的 if 语句中嵌套 if…else 语句,形式如下:

if 表达式 1: 
    if 表达式 2: 
        语句块 1 
    else: 
        语句块 2

也能在 else 语句中嵌套

if 表达式 1: 
    if 表达式 2: 
        语句块 1 
    else: 
        语句块 2
else: 
    if 表达式 3: 
        语句块 3 
    else: 
        语句块 4

还能在 elif 语句中嵌套

if 表达式 1: 
    if 表达式 2: 
        语句块 1 
    else: 
        语句块 2
elif 表达式 3: 
    if 表达式 4: 
        语句块 3 
    else: 
        语句块 4
else: 
    if 表达式 5: 
        语句块 5 
    else: 
        语句块 6

if 选择语句可以有多种嵌套方式,在开发程序时,可以根据自身需要选择在合适的分支基础上进行嵌套,但一定要严格控制好不同级别代码块的缩进量。

课程开始的例子转换成 Python 代码:

name = input("请输入你的名字:\n")
hobby = int(input("请选择你擅长/喜欢的科目,文科选1,理科选2:\n"))
if hobby == 1:
    orientation_choose = int(input("请选择你想要的职业,历史选1,地理选2:\n"))
    if orientation_choose == 1:
        orientation = "历史"
    else:
        orientation = "地理"
else:
    orientation_choose = int(input("请选择你想从业的方向:数学选1,生物选2,编程选3\n"))
    if orientation_choose == 1:
        orientation = "数学"
    elif orientation_choose == 2:
        orientation = "生物"
    else:
        coder_choose = int(input("请选择你想从事的软件职业方向:测试选1,开发选2,产品选3,项目经理选4\n"))
        if coder_choose == 1:
            orientation = "测试"
        elif coder_choose == 2:
            orientation = "开发"
        elif coder_choose == 3:
            orientation = "产品"
        else:
            orientation = "项目经理"
print(f"{name} 同学,你意向的职业为: {orientation}")

通过转换出来的代码,就能使用条件语句 if 实现学生的求职意向调查的简单逻辑了。