单元一
第4课 教程序做判断——if、for与函数

一、任务目标
写一个“是否在水果名单里”的小函数,为下一单元分类器打地基。
二、知识点短列表
- 「if 条件:」 成立才执行缩进块;可配 「否则」。
- 比较:「>=」、「比较相等」;成员:「x in fruits」。
- 「def 名字(参数):」 定义函数;「return」 交回结果。
- 定义不会自动跑,必须调用:「is_fruit」。
- 函数里可以再写 for 与 if,组合更强本领。
- 后面课的 classify/predict/train 都是函数接口。
- 「比较相等」 比较是否相等;「赋值」 只用于赋值,条件里不要写成单等号。
- 函数可以有多个 「return」,执行到某一个就立刻结束并交回结果。
三、语法精讲
「如果…那么…」 后面写条件,条件为真才走缩进分支。本课用 「score >= 60」 与 「name in fruits」。「in」 检查元素是否出现在列表中,非常适合“名单分类”。注意 「比较相等」 是比较相等,「赋值」 是赋值,不要混用。
函数把一段可重复使用的步骤封起来:第一行 「def 名字(参数):」,下面缩进写过程,用 「return」 把答案交回调用者。若只有 「打印」 没有 「return」,调用处拿不到值,检查题的函数测试会失败。
综合题在函数里遍历名单:对每个名字问“是不是水果”,是则计数加一。这训练你把“循环 + 判断 + 返回”焊在一起——有监督分类器、正确率统计、标签计数,全是同一套积木。
接口意识从本课开始建立:函数名告诉别人“我能干什么”,参数告诉“你要给我什么”,return 告诉“我交回什么”。下一单元的 「classify」 只是把名单判断换成返回“水果/蔬菜/未知”,外形几乎一样。
调试顺序建议:先让 if 分支在主程序跑通,再包进 def;先 return 固定值确认调用成功,再写真实逻辑。这样报错时你知道问题在结构还是在条件。
四、易错提醒
- if/def/for 下面必须缩进;缩进不一致会报错。
- 写了 「定义函数」 却忘记调用,函数体一次都不会执行。
- 该 「return True」 却只 「打印」,自动判题读不到返回值。
- 迷你例子:「if name in fruits: return True」。
走查:输入 「is_fruit」 → 输出 「True」,因为“香蕉”出现在 fruits 名单里,「name in fruits」 为真并 return True。输入 「is_fruit」 → 输出 「False」,因为不在名单,走到最后的 「return False」。
缩进军规:if/for/def 下一行必须多缩进 4 格;少一格会 IndentationError 或逻辑跑出分支。用编辑器显示空白符,避免混用 Tab 与空格。
想一想:「count_fruits」 应返回几?先口算再对照函数逻辑。
迁移表:is_fruit 返回布尔;classify 返回标签字符串;count_fruits 返回整数个数。三种返回类型不同,但都依赖 if/in/return。默写一张表:函数名|参数|返回什么|课内检查用哪几个样例。默写不全,不允许进入有监督单元编程。
函数三件套:def 冒号、缩进逻辑、return 交回。缺 return 则检查读不到值;缺调用则函数不跑。is_fruit 与 classify 分支同构,差别只在返回 True/False 还是标签字符串。count_fruits 含两个水果应返回 2。
要点串讲:if 做分支,in 做成员判断,def 打包本领,return 交回结果,调用才会执行。classify/count_label/accuracy 都是这一课积木的组合拳。本课过关标准:能写出带 return 的 is_fruit,并在函数内用 for+if 完成计数。迁移练习:把 is_fruit 的 True/False 改成返回“水果/非水果”字符串,体会 classify 只是返回值形态不同。
五、操作步骤
六、解题思路
任务:写一个“是否在水果名单里”的小函数,为下一单元分类器打地基。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「写一个“是否在水果名单里”的小函数,为下一单元分类器打地基。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
- 3写出判断条件:什么情况下走 A,什么情况下走 B。
- 4对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
七、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 控制 | 满足条件时执行对应分支,用于按键、传感阈值的判断。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
![]() | 函数 | 封装一段可重复调用的积木。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
即时验算:score=85 时 result 必为及格;is_fruit("香蕉") 为 True、is_fruit("桌子") 为 False;count_fruits(["苹果","白菜","香蕉"]) 为 2。三值与期望不符先查 return/in,再点检查。score=59 时应得不及格,作对照。return 才能被检查读取。先 def 后调用,缺一不可。
调用链默写:先看到 def 名字,再在下方写 print(名字(实参))。只写 def 不调用,输出区空白;只调用未定义,会 NameError。本课结束标准:同桌能说出 is_fruit 与即将学习的 classify 在“输入→判断→返回”上的三点相同、一点不同(返回类型)。
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:if 下面不缩进;或函数只 print 不 return;或定义后从不调用。
判断:条件后冒号并缩进;用 return 交回结果;先 def 再调用检查。
判断:函数可以用「返回」把结果交回去。
判断:「如果…那么…」积木里嵌套的语句不需要放进积木槽。
判断:「定义函数」积木搭好后,还需要调用才会执行。
判断:用「列表包含」可判断某项是否在列表中。
判断:classify、predict 本质上也是函数。
九、知识点讲解
先弄清本课输入与输出,再进编程练习对照现象。
十、编程练习
用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。
参考代码(对照抄写到下方 Mixly)
# 体验:用 if 判断分数是否及格
score = 85
if score >= 60:
result = "及格"
else:
result = "不及格"
print(result)
正在载入编程环境
正在载入 Mixly 图形化编程环境…
十一、本节小结
你现在能用 「如果…那么…」/in 做判断,用 「定义函数」/return 定义并调用函数,还能在函数内组合 「遍历循环」 完成 count_fruits;调用链与缩进军规要能默写;比较用 ==,赋值用 =,不再混用。多参数函数与标准库 import,再进入有监督的 classify。

