CAICP-E · Python 编程基础
如果……就……
程序开始会选择。缩进表示谁属于这一句 if。
这一节要学会什么
#what路口要不要转弯
#hook走路碰到路口:有的路,绿灯才走;分数到了 60,才说及格;密码对了,门才开。
电脑不会自己判断。你要写清楚:如果怎样,就做什么。

如果觉得有点难 先记住两件事。
if后面写条件,末尾加冒号。 属于 if 的句子,左边空 4 格。如果已经会了 写一个密码门。 密码对了打印「门开了」。 再在 if 后面加一行,看它会不会总是出现。
先把顺序跑熟
#explore-seq没有路口时,程序很老实。写在前面的先做。 写在后面的后做。这叫顺序结构。
print("打开书包")
print("拿出课本")
print("开始学习")三行按顺序出现。少写一行,它不会自己补。 打乱顺序,意思就会变。

变量也按顺序。
n = 1
n = n + 1
print(n)先放 1,再变成 2。顺序是底。 选择是在这个底上加路口。
if:条件成立才走
#explore-ifif 的中文是:如果。后面写一个条件。
条件为 True,才跑里面的句子。
上一课学过比较。比较会得到真或假。 把它接到 if 后面。
score = 80
if score >= 60:
print("及格")80 大于等于 60,条件是真的。所以会打印:及格
条件不成立会怎样?
score = 50
if score >= 60:
print("及格")50 不到 60。里面那句被跳过。 屏幕上什么「及格」都没有。
绿灯才走,也是同一件事。
light = "绿"
if light == "绿":
print("走")灯不是绿,就不会打印「走」。程序继续往下,不会卡住。

缩进:谁属于这一句 if
#explore-indent看仔细。print("及格") 前面空了一截。
if score >= 60:
print("及格")这一截叫缩进。它表示:这行是 if 家里的人。
靠左边空几格认谁是一家人。所以缩进是语法,不是装饰。
约定:一次空 4 个空格。不要空 2 格。 也不要有的行 2 格、有的行 4 格。乱了,电脑会报错。

冒号 : 像一扇门。if 那一行末尾必须有它。
门开了,下一行才往里站。
忘了冒号,程序会报错。有冒号却忘了缩进,也会报错。

用眼睛看左边齐不齐。也可以用手指比。 同一家里的人,空格要一样多。
if 后面那一行还会跑
#explore-after缩进的,属于 if。没缩进的,不属于 if。 无论条件真假,它都会跑。
score = 80
if score >= 60:
print("及格")
print("看完分数")80 够 60。两行都会出现:及格,然后看完分数。
score = 50
if score >= 60:
print("及格")
print("看完分数")50 不够。「及格」被跳过。 「看完分数」没有缩进,所以还是会出现。
这就是缩进的用处。它把「有时做」和「每次做」分开。
想做两件属于 if 的事,都往里站。
score = 80
if score >= 60:
print("及格")
print("可以去操场")
print("看完分数")两行都空 4 格。它们是一家人。 最后一行不空,每次都会说「看完分数」。
小项目:及格线和密码门
#explore-door先写及格线。
score = 72
if score >= 60:
print("及格")
print("成绩看完了")把 72 改成 59,再跑一次。看哪一句还在,哪一句消失。
再写一扇密码门。
code = "8821"
if code == "8821":
print("门开了")
print("门铃停了")密码对了,门开,门铃也停。把 code 改成别的字。
门不开,门铃照样停。因为最后一行不属于 if。
条件不成立时,里面那句不会出现。想打印另一句「要不然怎样」,下一课再学。
跑不通时先看这两处
#explore-mistakes刚写 if,最常见两种漏。
第一,冒号忘了。
if score >= 60
print("及格")第二,该缩进的没缩进。
if score >= 60:
print("及格")电脑会报错。先看最后一行提示。 再回头找:冒号在不在?左边空了 4 格没有?
还有一种:不该缩进的也缩进去了。那一行就变成 if 家里的人。 条件为假时,它也会被跳过。这不是报错,是结果跟你想的不一样。 用手指从左边扫一遍,最稳。
这节课我学会了
#review记住这些:
- 没有判断时,程序按顺序往下做。
if条件为真,才做里面的句子。if那一行末尾要有冒号。- 属于 if 的句子左边空 4 格。缩进决定谁是家里人。
- 没有缩进的下一行,真假都会跑。
试着在心里跑一遍:
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 和缩进
下列说法正确的有哪些?可以多选。
可多选
未登录时不会保存学习进度