单元一

第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
写 if按分数得到 result 为及格或不及格。
步骤2
定义函数is_fruit:名单内 True,否则 False。
步骤3
调用验证对香蕉、桌子等调用,看返回值。
步骤4
综合计数count_fruits 内 for+if,返回水果个数。

六、解题思路

任务:写一个“是否在水果名单里”的小函数,为下一单元分类器打地基。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「写一个“是否在水果名单里”的小函数,为下一单元分类器打地基。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
  3. 3写出判断条件:什么情况下走 A,什么情况下走 B。
  4. 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 在“输入→判断→返回”上的三点相同、一点不同(返回类型)。

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:if 下面不缩进;或函数只 print 不 return;或定义后从不调用。

  2. 判断:条件后冒号并缩进;用 return 交回结果;先 def 再调用检查。

  3. 判断:函数可以用「返回」把结果交回去。

  4. 判断:「如果…那么…」积木里嵌套的语句不需要放进积木槽。

  5. 判断:「定义函数」积木搭好后,还需要调用才会执行。

  6. 判断:用「列表包含」可判断某项是否在列表中。

  7. 判断:classify、predict 本质上也是函数。

九、知识点讲解

条件判断根据真假走不同分支:满足就做 A,否则做 B(或什么都不做)。阈值是用来比较的分界线。智能感来自「会选择」;边界情况(刚好等于)也要事先想好。

先弄清本课输入与输出,再进编程练习对照现象。

十、编程练习

用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。

参考代码(对照抄写到下方 Mixly)
# 体验:用 if 判断分数是否及格
score = 85
if score >= 60:
    result = "及格"
else:
    result = "不及格"
print(result)

十一、本节小结

你现在能用 「如果…那么…」/in 做判断,用 「定义函数」/return 定义并调用函数,还能在函数内组合 「遍历循环」 完成 count_fruits;调用链与缩进军规要能默写;比较用 ==,赋值用 =,不再混用。多参数函数标准库 import,再进入有监督的 classify