Python if 语句

在 Python 中,选择结构指的是根据 “条件判断” 来决定执行哪一段代码。选择结构有单向选择、双向选择以及多向选择,但不管是哪一种,Python 都只会执行其中的一个分支。

Python if 语句

在 Python 中,单向选择使用的是 if 语句,其流程如下图所示。

Python if 语句

语法:

if 条件:
    ……

说明:

这里的 “条件” 一般是一个比较表达式。如果 “条件” 返回为 True,则会执行冒号下面缩进的代码块;如果 “条件” 返回为 False,则会直接跳过冒号下面缩进的代码块。然后按照顺序来执行后面的程序。

示例 1:使用 if 语句

score = input('请输入分数:')
score = int(score)

if score > 60:
    print('通过!')
print('考试结束!')

运行之后,我们输入 “90”,此时结果如下:

通过!
考试结束!

分析:

由于变量 score 的值为 90,所以 score > 60 返回 True,因此会执行冒号下面缩进的代码块。重新运行上面的代码,如果输入的是 “50”,此时运行结果如下。

考试结束!

由于 50 > 60 返回 False,因此 Python 会跳过冒号下面缩进的代码,直接跳到最后一个 print() 函数。最后需要注意的是,上面的示例中的 print('通过!') 属于 if 语句,但 print('考试结束!') 并不属于。

Python 中的 “缩进”

Python 是使用 “缩进” 的方式来告诉计算机这个代码块属于哪一个 if、else 或 while,这一点跟 C、C++ 等语言使用大括号 “{}” 的方式不一样。对于缩进,一般是缩进 4 个空格或者一个 Tab 键。

Python if...else 语句

在 Python 中,双向选择使用的是 if...else 语句,其流程如下图所示。

Python if...else 语句

语法:

if 条件:
    ……
else:
    ……

说明:

if...else 相对 if 来说,仅仅是多了一个选择。当条件返回为 True 时,会执行 if 后面缩进的代码块;当条件返回为 False 时,会执行 else 后面缩进的代码块。

示例 2:使用 if...else 语句

score = input('请输入分数:')
score = int(score)

if score < 60:
    print('补考!')
else:
    print('通过!')

运行之后,我们输入 “90”,此时结果如下:

通过!

由于变量 score 的值为 90,而 score < 60 返回 False,此时执行的就不是 if 代码块,而是 else 代码块了。

Python if...elif...else 语句

Python 中的多向选择,指的是在双向选择的基础上增加多个选择分支。

语法:

if 条件 1:
    # 当条件 1 为 True 时执行的代码
elif 条件 2:
    # 当条件 2 为 True 时执行的代码
else:
    # 当条件 1 和条件 2 都为 False 时执行的代码

说明:

多向选择语法看似复杂,其实它只是在双向选择基础上增加一个或多个选择分支罢了。对比一下两者的语法格式,你就知道了。其中,elif 指的是 “else if”,表示带有条件的 else 子句。

示例 3:使用 if...elif...else 语句

time = 20
if time < 12:
    print('早上好!')
elif time >= 12 and time < 18:
    print('下午好!')
else:
    print('晚上好!')

运行结果如下。

晚上好!

分析:

对于多向选择,Python 会从第一个 if 开始判断,如果第一个 if 条件不满足,则判断第二个 if 条件……直到满足为止。一旦满足,就会退出整个 if 结构。

这里再告诉你好用的技巧,对于连续范围的判断,还可以对其进行简写。比如 time >= 12 and time < 18 可以简写为:12 <= time < 18,去试试吧。

技巧: 比较运算符可以连续使用,其效果与使用 and 连接多个表达式的效果相同,比如 x < y < z 相当于 x < y and y < z、x == y == z 相当于 x == y and y == z。

Python if 语句的嵌套

在 Python 中,if 语句是可以嵌套使用的,也就是 if 语句的内部还可以定义 if 语句。

语法:

if 条件 1:
    if 条件 2:
        # 当 “条件1” 和 “条件2” 都为 True 时执行的代码
    else:
        # 当 “条件1” 为 True、“条件2” 为 False 时执行的代码
else:
    if 条件 2:
        # 当 “条件1” 为 False、“条件2” 为 True 时执行的代码
    else:
        # 当 “条件1” 和 “条件2” 都为 False 时执行的代码

说明:

对于 if 语句的嵌套,我们只需要从外到内根据条件一个个去判断,就像剥洋葱一样简单(如下图所示)。Python 是用 “缩进” 的方式来表示哪一个代码块属于哪一个 if 或 else 的,所以我们可以根据缩进来判断哪两个 if 和 else 是一对的。

Python if 语句的嵌套就像洋葱一样

示例 4:if 语句的嵌套实现 “公交车检票”

ticket = 1
seat = 0

if ticket:
    if seat:
        print('上车,请坐!')
    else:
        print('上车,站着!')
else:
    print('请等候下一班车!')

运行结果如下。

上车,站着!

示例 5:判断 x 和 y 的大小

x = 12
y = 8

if x < 10:
    if y < 10:
        print('x 小于 10, y 小于 10')
    else:
        print('x 小于 10, y 大于或等于 10')
else:
    if y < 10:
        print('x 大于 10, y 小于 10')
    else:
        print('x 大于 10, y 大于或等于 10')

运行结果如下。

x 大于 10, y 小于 10

分析:

对于 if 语句,还有以下 2 点需要特别说明一下。

  • Python 中 if 后面表达式的小括号可加可不加。
  • Python 使用的是 elif,而不是 else if。

Python 的代码格式

Python 每条语句末尾不需要加分号,也不使用大括号 “{}” 来实现代码块的包裹,这些其实都是考虑到一点:在大型项目的开发中,问题往往都是由一些小细节导致的,例如多了一个分号,或者少了一个大括号等。

因此,Python 舍弃这些方式,而使用更为简洁的方式,这也体现了 Python 本身 “美与哲学” 的特点。

上一篇: Python 转义字符

下一篇: Python 三元运算符

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号