学径 LearnPath

CAICP-E · Python 编程基础 / Wiki

分支

条件成立才走这一条路。程序开始会选择。

它是什么

分支 让程序会选择。 条件成立走一条路。 否则走另一条。

没有判断时,程序按顺序往下跑。 那叫顺序结构。 顺序是底,分支是路口。

生活里处处是路口:下雨就带伞,否则不带。 程序用 if 写出这种「如果……就……」。

python
score = 80
if score >= 60:
    print("及格")
else:
    print("继续加油")

名字从哪来

分支的英文是 branch,也叫条件语句、选择结构。 if 和 else 就是英语里的「如果」和「否则」。

这个写法很老。 1960 年的 ALGOL 语言已经用 if … then … else。 后来的 C 语言家族把它带进无数新语言。 Python 继续用英语单词,并增加了 elif。 elif 是 else if 的缩写,表示「否则如果」。

有的语言写成 else if 两个词。 Python 要写成一个词 elif

冒号 :缩进 是 Python 自己的脾气: 用对齐表示「这一捆句子属于这个 if」。

它怎么工作

if 后面写条件。 条件通常是 比较逻辑 的结果。 后面要写冒号。 里面的句子要缩进。

路比较多时用 elif。 从上往下问。 第一个真的分支赢。 后面不再问。

python
if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("继续加油")

else 可以省略。 有它更稳:总能走到一条路。 没有它,条件为假时,这一段什么也不做,程序继续往下。

同一组 if-elif-else 只走一条。 不会两边的 print 都跑。

条件为真,不一定非要写成 if flag == True。 直接 if flag: 就行。 空字符串、数字 0、空列表,在条件里常常被当成假。 非空、非零常常被当成真。

分支里面还可以再写分支。 那是 嵌套

初学把 if / elif / else 用熟就够。

生活里在哪里

  • 校门口:有学生证就进,否则登记。
  • 天气:下雨走走廊,否则走操场。
  • 游戏:生命值大于 0 继续,否则结束。
  • 自动售货机:钱够就出货,否则提示余额不足。
  • 分类垃圾桶:是纸就进纸桶,是瓶子就进另一个桶。

流程图里的菱形,通常就是一个分支。 一条进,两条出。

和相近概念的差别

顺序结构:一句接一句,不提问。 分支结构:先提问,再选路。 循环 结构:同一条路走很多遍。

三种结构可以组合。 循环里面可以有分支,分支里面也可以有循环。

ifwhile 都要条件。 if 问一次。 while 每圈都问,见 while 循环

常见误会

误会 1:忘记冒号或忘记缩进。

没有冒号,身体不成立。 没有缩进,电脑不知道谁属于 if。

误会 2:写成 else if

Python 要写 elif

误会 3:条件后面又写了 = 赋值。

提问要用 == 或其他比较符号。

误会 4:以为两个 if 紧挨着,就只会走一条。

两个独立的 if,可能两条都走。 要互斥,请用 if-elif-else。

误会 5:条件写反了,还怪 Python。

if score > 60 不会让 60 分及格。 路口的问题本身要问对。

想知道更多

  • 书:潘洪波《小学生 Python 趣味编程》(用生活判断引出「如果……就……」)。
  • 书:埃里克·马瑟斯《Python 编程:从入门到实践》(条件一章把 if、elif、else 讲得很清楚,可和家长一起读)。

未登录时不会保存学习进度