学径 LearnPath

CAICP-E · Python 编程基础

如果……就……

程序开始会选择。缩进表示谁属于这一句 if。

讲解模式

这一节要学会什么

#what

前面的程序,都是从上到下一句一句做。这节课要让程序会选择。

你会写 if。条件成立,才做里面那几句。

你还会第一次认真学 缩进。 缩进不是把字写好看,它在告诉电脑:这几行属于 if。

这一课不学 else,也不学 and、or。先把「如果……就……」和缩进做扎实。

路口要不要转弯

#hook

走路碰到路口:有的路,绿灯才走;分数到了 60,才说及格;密码对了,门才开。

电脑不会自己判断。你要写清楚:如果怎样,就做什么。

程序在路口选择

如果觉得有点难 先记住两件事。 if 后面写条件,末尾加冒号。 属于 if 的句子,左边空 4 格。

如果已经会了 写一个密码门。 密码对了打印「门开了」。 再在 if 后面加一行,看它会不会总是出现。

先把顺序跑熟

#explore-seq

没有路口时,程序很老实。写在前面的先做。 写在后面的后做。这叫顺序结构。

python
print("打开书包")
print("拿出课本")
print("开始学习")

三行按顺序出现。少写一行,它不会自己补。 打乱顺序,意思就会变。

打开书包拿出课本开始学习

变量也按顺序。

python
n = 1
n = n + 1
print(n)

先放 1,再变成 2。顺序是底。 选择是在这个底上加路口。

if:条件成立才走

#explore-if

if 的中文是:如果。后面写一个条件。 条件为 True,才跑里面的句子。

上一课学过比较。比较会得到真或假。 把它接到 if 后面。

python
score = 80
if score >= 60:
    print("及格")

80 大于等于 60,条件是真的。所以会打印:及格

条件不成立会怎样?

python
score = 50
if score >= 60:
    print("及格")

50 不到 60。里面那句被跳过。 屏幕上什么「及格」都没有。

绿灯才走,也是同一件事。

python
light = "绿"
if light == "绿":
    print("走")

灯不是绿,就不会打印「走」。程序继续往下,不会卡住。

校门口红绿灯

缩进:谁属于这一句 if

#explore-indent

看仔细。print("及格") 前面空了一截。

python
if score >= 60:
    print("及格")

这一截叫缩进。它表示:这行是 if 家里的人。

靠左边空几格认谁是一家人。所以缩进是语法,不是装饰。

约定:一次空 4 个空格。不要空 2 格。 也不要有的行 2 格、有的行 4 格。乱了,电脑会报错。

冒号像门,里面的句子往里站

冒号 : 像一扇门。if 那一行末尾必须有它。 门开了,下一行才往里站。

忘了冒号,程序会报错。有冒号却忘了缩进,也会报错。

左边空出来的那一截

用眼睛看左边齐不齐。也可以用手指比。 同一家里的人,空格要一样多。

if 后面那一行还会跑

#explore-after

缩进的,属于 if。没缩进的,不属于 if。 无论条件真假,它都会跑。

python
score = 80
if score >= 60:
    print("及格")
print("看完分数")

80 够 60。两行都会出现:及格,然后看完分数。

python
score = 50
if score >= 60:
    print("及格")
print("看完分数")

50 不够。「及格」被跳过。 「看完分数」没有缩进,所以还是会出现。

这就是缩进的用处。它把「有时做」和「每次做」分开。

想做两件属于 if 的事,都往里站。

python
score = 80
if score >= 60:
    print("及格")
    print("可以去操场")
print("看完分数")

两行都空 4 格。它们是一家人。 最后一行不空,每次都会说「看完分数」。

小项目:及格线和密码门

#explore-door

先写及格线。

python
score = 72
if score >= 60:
    print("及格")
print("成绩看完了")

把 72 改成 59,再跑一次。看哪一句还在,哪一句消失。

再写一扇密码门。

python
code = "8821"
if code == "8821":
    print("门开了")
print("门铃停了")

密码对了,门开,门铃也停。把 code 改成别的字。 门不开,门铃照样停。因为最后一行不属于 if。

条件不成立时,里面那句不会出现。想打印另一句「要不然怎样」,下一课再学。

跑不通时先看这两处

#explore-mistakes

刚写 if,最常见两种漏。

第一,冒号忘了。

python
if score >= 60
    print("及格")

第二,该缩进的没缩进。

python
if score >= 60:
print("及格")

电脑会报错。先看最后一行提示。 再回头找:冒号在不在?左边空了 4 格没有?

还有一种:不该缩进的也缩进去了。那一行就变成 if 家里的人。 条件为假时,它也会被跳过。这不是报错,是结果跟你想的不一样。 用手指从左边扫一遍,最稳。

这节课我学会了

#review

记住这些:

  1. 没有判断时,程序按顺序往下做。
  2. if 条件为真,才做里面的句子。
  3. if 那一行末尾要有冒号。
  4. 属于 if 的句子左边空 4 格。缩进决定谁是家里人。
  5. 没有缩进的下一行,真假都会跑。

试着在心里跑一遍:

python
score = 50
if score >= 60:
    print("及格")
print("看完分数")

屏幕上只有:看完分数 因为 50 不够,里面被跳过。

下一课才学:要不然呢。再下一课才把两个条件拼在一起。 先让缩进站稳。

试一试

#evaluate

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

单选题

80 分会打印什么

score = 80。if score >= 60: 打印「及格」,下一行不缩进打印「看完分数」。屏幕上最可能看到什么?

单选题

50 分会打印什么

score = 50。if score >= 60: 打印「及格」,下一行不缩进打印「看完分数」。屏幕上最可能看到什么?

单选题

哪一行属于 if

为什么 print(「及格」) 要写在 if 的下一行,并且左边空 4 格?

多选题

关于 if 和缩进

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

可多选

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