学径 LearnPath

CAICP-E · Python 编程基础

要不然呢

条件不成立时走另一条路,多条路用 elif。

讲解模式

这一节要学会什么

#what

上一课会写 if。条件为真,才做里面那几句。 为假,就跳过。

这节课补上另一半:要不然呢

你会写 else。条件不成立时,走另一条路。

路比较多时,你会写 elif。从上往下问,问到第一个真的就走。

ifelifelse 要齐头对齐。它们是同一组路口。

这一课还不把两个条件用 and 拼起来。也不在 if 里面再写 if。 先把「多条路只走一条」跑熟。

红灯怎么办

#hook

绿灯走。那红灯呢? 总不能什么都不说。

分数到了 60,打印及格。不到 60,也该有一句话:继续加油。

生活里的选择,常常不是「做」或「不做」。是「走这条」或「走那条」。

校门口红绿灯

如果觉得有点难 先只写 if 和 else 两路。 跑通了再加 elif。

如果已经会了 写一个三档评价。 优秀、及格、继续加油。 改三次分数,看每次只出现一句。

else:否则走这边

#explore-else

else 表示:否则。前面的条件为假,才走这边。

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

50 不到 60。所以打印:继续加油

两条路只走一条。不会两句都打印。

把分数改成 80。这次只打印:及格 else 那边被跳过。

else 后面也要冒号。里面的句子也要缩进 4 格。 和 if 家里的人,空格一样多。

python
light = "红"
if light == "绿":
    print("走")
else:
    print("停")

灯不是绿,就走 else。红灯会打印:停

程序在路口选择

else 自己不再写条件。它的意思就是:上面那个 if 不行,就来我这儿。

elif:否则如果

#explore-elif

有时候不是两条路。是三条、四条。

红绿灯有绿、黄、红。成绩有优秀、及格、加油。

这时用 elif。它表示:否则如果。 再问一个新条件。

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

从上往下问。先问 90,不成立。 再问 60,成立。后面不再问。

85 不到 90,但到了 60。所以只打印:及格

三条路:优秀、及格、加油

注意:不会既优秀又及格。第一个真的分支赢了,后面就坐下。

elif 可以写好几个。最后的 else 可以省略。 有它更稳:总能走到一条路。

python
light = "黄"
if light == "绿":
    print("走")
elif light == "红":
    print("停")
else:
    print("等一等")

黄灯不是绿,也不是红。走 else,打印:等一等

齐头对齐,才是同一组

#explore-align

ifelifelse 要站在同一列。左边空格一样多。 这样电脑才知道:它们是同一组路口。

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

三个词齐头。里面的 print 都往里站 4 格。

else 和 if 在同一列

如果 elseif 更靠右,电脑会认错家。对齐看错,路就走错。

用手指从左边扫。同一组的 if / elif / else,指尖停在同一条线上。

一次只走一条合格的路。这叫互相排斥:选了这条,就不再选那条。

小项目:成绩三档和红绿灯

#explore-grade

先做成绩三档。改 score,每次只该出现一句。

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

92 走第一句:优秀 把 92 改成 70:及格 再改成 40:继续加油

问的顺序很重要。如果先问 >= 60,92 也会被说成及格。 优秀那条就再也走不到。所以大的门槛写在上面。

再做红绿灯。

python
light = "绿"
if light == "绿":
    print("走")
elif light == "黄":
    print("等一等")
else:
    print("停")

把灯改成黄、再改成红。三句里每次只出现一句。

条件不成立时,现在有地方说话了。两个条件要一起看,下一课再学。

这节课我学会了

#review

记住这些:

  1. else:if 不行,就走这边。
  2. elif:否则再问一个条件。
  3. 同一组只走第一条为真的路。后面不再问。
  4. if / elif / else 齐头对齐。里面的句子再空 4 格。

试着在心里跑一遍:

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

先问 90,假。再问 60,真。 打印:及格 else 不会再走。

下一课才把两个条件拼在一起。先让三条路各走各的。

试一试

#evaluate

看完就来检查一下。选错了也可以再想。

单选题

59 分走哪条

score = 59。if score >= 60 打印「A」,else 打印「B」。结果是?

单选题

85 分三档

score = 85。if score >= 90 打印优,elif score >= 60 打印及格,else 打印加油。结果是?

单选题

黄灯走哪句

light = 「黄」。if 绿就走,elif 红就停,else 就等一等。会打印什么?

多选题

关于 else 和 elif

下列说法正确的有哪些?可以多选。

可多选

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