第 12 章练习与答案

🌈 关于《AI 零基础 36 讲》课后训练
📚 与正式讲解配套学习
本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正式讲解一起使用。整个系列面向初学者,从日常 AI
使用逐步进入编程、模型训练和大模型应用开发。
✍️ 先独立作答,再核对答案
训练围绕本章知识安排概念判断、结果分析或动手任务,并提供参考答案与解释。建议先读完对应的正式文章,再独立作答;遇到困难时回看相关例子,最后核对答案。
💻 代码题请亲手运行
观察程序输出,确认自己能解释结果、发现错误并完成修复。做完一道题,也要弄清答案为什么成立。
先自己做
- 函数内部 print(60),但没有 return,调用位置会得到什么?
- 为什么两次调用 sum_minutes 都要在函数内部先把 total 设为 0?
- data/sample.txt 是相对于脚本位置,还是终端当前工作目录解析?
- 本章规则会怎样统计 "AI ai don't 中文 123"?helps 和 help 会合并吗?
- 给 count_words 的输出加上 top_three,使用词频列表前三项。正常文本与空文本都要运行。
- 把输出路径写成输入路径,完整程序应该怎样处理?
- 文件编码错误时,为什么不直接忽略不能解码的字节?
对照答案
第 1 题会得到 None。print 显示内容,return 交回结果。
第 2 题让每次统计从零开始,避免前一次累计值进入下一次计算。
第 3 题使用当前工作目录。完整程序允许在命令行传入绝对路径。
第 4 题得到 ai 两次、don't 一次,共三个词。helps 与 help 保留为两个不同词。
第 5 题可以先不修改原模块,另建 examples/top_three.py,复制下面的代码。它复用本章模块和教学文件,在本章目录运行。
python
from pathlib import Path
from text_stats import count_words
def count_with_top_three(text):
result = count_words(text)
result["top_three"] = result["frequencies"][:3]
return result
text = Path("data/sample.txt").read_text(encoding="utf-8")
print(count_with_top_three(text)["top_three"])
print(count_with_top_three("")["top_three"])
输出如下。
text
[{'word': 'us', 'count': 3}, {'word': 'ai', 'count': 2}, {'word': 'helps', 'count': 2}]
[]
在原模块内部增加字段也可以,只要在返回前把 frequencies[:3] 放入 top_three,并让调用者使用这个返回值。
第 6 题在写入前拒绝操作,提示输入与输出不能使用同一个文件,原文本保持完整。
第 7 题忽略错误会丢内容,统计值随之改变。应确认原编码,正确打开后另存为 UTF-8,再重新运行。