条件判断与循环
进阶程式不一定一口气执行到底:if 让它选路,loop 让它重复。有了这两样,程式才会「想东西」和「省工夫」。
- if/如果…否则=选路;就是流程图的菱形
- == 才是问相等;= 是放入变数
- for/重复 N 次=计数循环;range(n) 由 0 数到 n-1
§课文原文 Passage
1条件判断令程式懂得「选路」:条件成立便执行 A,否则执行 B,就像「下雨便带伞」的日常决定。循环则令程式自动重复执行任务,不必把同一句程式码抄写十次,既节省空间,又减少出错机会。两者合称控制结构,决定程式的流向,是编程思维的核心,也是流程图中菱形与分支箭嘴的由来。
2实际写法上,Scratch 以「如果……那么……否则」积木配合「重复执行」积木;Python 则使用 if-else 语句与 for 循环,并靠缩排标示哪些程式码属于条件或循环之内,缩排错误会令程式无法执行。常见练习包括用循环输出 1 至 10 的数字、以条件判断分数是否及格,或把两者结合,重复检查全班每位同学的成绩。
3香港日常例子:巴士上的八达通机先判断卡内余额是否足够才扣款,电梯逐层上落、应答各层的按钮,港铁闸机验票成功才开闸,自动门感应到有人靠近才打开,全部都是条件判断与循环的应用。生活之中这两种结构无处不在,掌握之后,编程思维便向前跨进一大步。
1重点摘要 Summary
程式不一定一口气执行到底:if 让它选路,loop 让它重复。有了这两样,程式才会「想东西」和「省工夫」。
2生字卡 Vocabulary
一句真/假的判断,例如 分数 ≥ 50。
条件真行 A 段,假行 B 段;Scratch 叫「如果…那么…否则」。
== 相等、!= 不等、> 大于、< 小于、>=、<=。
重复执行某段程式;Scratch 叫「重复执行 N 次」。
Python 的 for i in range(5) 会执行 5 次(i 由 0 数到 4)。
Python 用行首空格表示「哪些行属于 if/loop 里面」,不缩排会出错。
条件成立就不断重复的循环;条件要能够变成假,否则变成无限循环。
取得除法余数的运算符,例如 7 % 2 = 1;余 0 即是双数。
3逐步讲解 Steps
- 选路:if流程图的菱形翻译成程式码就是 if。Python 的写法是:if score >= 50: 下一行缩排 print('合格'),再加 else: print('不合格'),程式便会按分数自动选路。Scratch 则对应「如果……那么……否则」积木,把条件填进六角形格子。两种工具逻辑完全一样:条件成立时走第一条路,不成立时走另一条。初学者常见错误是忘记在 if 那一行的结尾加上冒号,程式便会立即出现语法错误。
- 比较符号比较符号只有几个,却最常写错:两个等号 == 用来问「是不是相等」;一个等号 = 只是把东西放入变数,两者完全不同。大于 >、小于 <、大于或等于 >=、小于或等于 <= 与数学用法接近,!= 则表示「不等于」。所有比较的结果只有两种:「真 True」或「假 False」。常见错误是把 = 当成 == 使用,例如 if score = 50: 会令程式直接出现语法错误,记住「问相等,写两个」。
- 重复:loop重复执行的工作用循环处理:Scratch 使用「重复执行 10 次」积木,把要重复的积木放进去;Python 写 for i in range(10): ,下面缩排的部分便会重复十次。range(10) 产生 0 至 9 十个数,正好重复十次,这一点最容易写错,因为许多人以为 range(10) 包含 10。想由 1 数到 10,就要写 range(1, 11),起点包含、终点不包含。用循环代替抄写十次程式码,既节省篇幅又减少出错。
- 缩排规矩Python 不用括号圈住「里面那段」程式码,而是用缩排,即行首的空格,惯例是四格。同一层的叙述必须对齐;if 或 for 底下的内容要多缩一层。缩错位置,程式轻则出现 SyntaxError 无法执行,重则文法正确却做错事,例如把某一行多缩了一格,令它意外地成为循环的一部分。Scratch 用积木的凹凸形状表达同样概念:积木嵌得越深,便是在越里面的循环或条件之内。
- 经典组合:for+if想印出 1 至 10 里面所有双数,就要把循环和条件结合:外层写 for i in range(1, 11): ,内层缩排 if i % 2 == 0: ,再缩一层写 print(i)。符号 % 表示求余数,i % 2 == 0 即是 i 除以 2 余 0,也就是双数。执行时程式把每个 i 轮流测试一次,符合条件才印出。这个组合是考试热门题目,例如改成印出 3 的倍数,只需把条件改为 i % 3 == 0,其余写法不变。
- while:条件成立就继续while 适合「事前不知道要重复多少次」的任务:写 while score < 100: ,下面缩排的程式会一直重复,直到条件变成假为止。循环里面必须有叙述令条件最终改变,例如 score = score + 10,否则条件永远成立,程式就会变成无限循环,停不下来。举例来说,不断输入分数直到总分达标,便适合用 while,因为事先无法知道要输入多少次。写完 while 之后,先检查循环内有没有一行令条件改变,这是避免当机的关键。
4图解 Diagrams
5例题示范 Example
例题:以下程式输出什么?for i in range(3): 里面缩排 print(i)
- 先拆解 range(3):它产生 0、1、2 三个数,因为 Python 由 0 开始计数,而且不包含终点 3。
- 循环把每个 i 依次传给 print,所以 print 会执行三次,分别印出 0、1、2 各一行。
- 常见错误是以为输出是 1、2、3;只要记住「由 0 起计、终点不包」,便不会堕入陷阱。
- 引伸:想输出 1、2、3,就要写 range(1, 4),起点 1 包含在内,终点 4 不包含在内。
- 答案:输出三行:0、1、2。关键是 range(3) 由 0 开始产生三个数,并且不包含 3 本身;想数 1 至 3,便要写 range(1, 4),因为范围永远包含起点、不包含终点。
6常见错误 Mistakes
75 题快测 Quick check
Q1Python 里面「判断相等」用哪个符号?A. = B. == C. =>
Q2for i in range(4) 会执行多少次?
Q3用中文讲出 if...else 的意思。
Q4判断变数 score 是否 50 分或以上,写出 if 那一行。
Q5Scratch 的「重复执行 10 次」对应 Python 哪一句?
8重点回顾 Recap
- if/如果…否则=选路;就是流程图的菱形
- == 才是问相等;= 是放入变数
- for/重复 N 次=计数循环;range(n) 由 0 数到 n-1
- Python 缩排决定哪些行在 if/loop 里面
- for+if 组合:循环逐个检查,条件选出想要的数