news 2026/10/12 3:50:05

【零基础学AI】第 8 章课后练习与答案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【零基础学AI】第 8 章课后练习与答案

第 8 章课后练习与答案

练习使用本章 examples 目录中的代码。先保留原文件,再复制一份完成修改。模型给出的文字不能填写成实际运行结果,必须在自己的终端执行以后记录。

🌈 关于《AI 零基础 36 讲》课后训练

📚与正式讲解配套学习

本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正式讲解一起使用。整个系列面向初学者,从日常 AI
使用逐步进入编程、模型训练和大模型应用开发。

✍️先独立作答,再核对答案

训练围绕本章知识安排概念判断、结果分析或动手任务,并提供参考答案与解释。建议先读完对应的正式文章,再独立作答;遇到困难时回看相关例子,最后核对答案。

💻代码题请亲手运行

观察程序输出,确认自己能解释结果、发现错误并完成修复。做完一道题,也要弄清答案为什么成立。

第一部分 解释原始代码

打开 calculator_before.py,写一条给 AI 的解释提示。提示需要说明你的基础,并要求它沿着 calculate(8, “-”, 2) 的执行顺序解释。

defcalculate(left,operator,right):ifoperator=="+":returnleft+rightifoperator=="-":returnleft-rightraiseValueError("不支持的运算符")if__name__=="__main__":print(calculate(8,"+",2))

回答下面的问题。

  1. 哪个条件会成立
  2. 函数返回什么
  3. raise 在什么情况下执行

第二部分 缩小修改范围

现在要让计算器支持取余运算符。请写一条修改提示,要求保留函数签名、已有四种运算和异常消息,只增加百分号分支。

补充两个验收样例,其中一个是正常输入,另一个用于检查除数为零。

第三部分 整理调试材料

下面是一条不完整的求助。

代码报错了,帮我修一下。 ValueError

请把它改成可复现的调试请求。至少包含运行环境、代码文件、启动命令、完整报错、输入、预期结果和最近改动。

第四部分 阅读 traceback

阅读 error-sample.txt,回答下面的问题。

  1. 异常类型是什么
  2. 哪一行执行了除法
  3. 哪一行把除数零传进函数
  4. 为什么只看最后一行不足以定位修改位置

第五部分 设计边界测试

为取余功能列出四个测试。至少包括一个正常整数、一个负数、除数为零和非法运算符。每项都写出输入与预期结果。

第六部分 运行前安全检查

假设 AI 给你的脚本新增了下面内容。

  • 安装一个你没听说过的第三方包
  • 读取整个用户目录
  • 把结果发送到一个外部网址
  • 删除处理完成的原文件
  • 在代码中直接写入访问令牌

请说明运行前怎样处理。若没有足够信息确认安全,应当停在哪一步。

第七部分 亲自运行

在 examples 目录依次运行修改前程序、错误中间版、修复后程序与单元测试。记录命令、标准输出、错误输出和退出码。

如果你的 Python 路径与本章不同,请使用自己电脑上的路径,不要照抄本章的解释器位置。

参考答案

第一部分答案

calculate(8, “-”, 2) 会跳过加法条件,在减法条件处成立并返回 6。return 执行后函数结束,因此 raise 不会运行。只有支持的条件都不成立时,程序才执行 raise。

合格提示应要求围绕这次调用解释输入、条件判断和返回值。只问每个单词的定义,很难看见程序怎样流动。

第二部分答案

修改提示可以要求只在除法分支之后增加百分号分支,不改变函数名和三个参数,也不改现有错误消息。正常样例可以使用 calculate(8, “%”, 3),预期为 2。除数为零可以使用 calculate(8, “%”, 0),预期抛出消息清楚的 ValueError。

百分号同样存在除数为零问题。若只测正常样例,这个错误会被漏掉。

第三部分答案

调试请求要贴完整 traceback 和触发问题的最小代码,并写明 Python 版本、操作系统、运行目录与命令。输入值、预期结果和最近改动能帮助定位是环境、调用方式还是新代码引起的问题。密钥和私人数据需要删除或替换。

第四部分答案

异常类型是 ZeroDivisionError。第 9 行执行 left / right,第 14 行用 calculate(8, “/”, 0) 触发这条路径。最后一行只说明发生了除零,前面的调用位置才能告诉读者从哪里传入了零,以及代码在哪一行真正失败。

第五部分答案

可以使用 8 % 3 得到 2,负数样例要根据 Python 实际规则写预期并运行确认。8 % 0 应触发 ValueError,百分号以外的未知运算符仍应触发“不支持的运算符”。测试名称要能看出它检查哪种行为。

第六部分答案

先暂停运行。确认第三方包的正式来源、用途和版本,再看脚本为什么需要读取整个用户目录。外部网址、删除动作和访问令牌都需要单独审查,不能因为代码能运行就接受。

可以把测试范围缩到专门准备的目录,使用虚构数据并移除网络与删除动作。真实令牌不应写进代码或提示词。无法解释某项权限用途时,保持不运行并请项目负责人或安全人员检查。

第七部分答案

修改前输出 10,错误中间版触发 ZeroDivisionError 并以退出码 1 结束,修复版输出 4.0,六个单元测试全部通过。

你的记录必须来自自己的终端。若结果不同,保留完整输出并核对解释器版本、工作目录和文件内容。

如有不清晰的步骤可以向AI寻求帮助

自我检查

  • 我会让 AI 沿具体输入解释代码
  • 我能把修改限制在一个小功能
  • 我会提供完整 traceback 和复现步骤
  • 我能区分模型建议与真实运行结果
  • 我会检查新依赖与高风险操作
  • 我会测试正常功能和边界输入
  • 我会保留命令、输出和退出码

七项都能做到,就可以进入第 9 章,正式安装 Python 与开发工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/12 3:45:43

研发总监如何用AI补设计短板:五大实战场景与工具链

1. 研发总监为什么需要AI补设计短板1.1 一个真实困境:技术强、设计弱,产品就是差口气我带研发团队快十年了,从一线码农做到总监,踩过最大的坑不是技术架构,而是设计。团队里清一色工科背景,后端逻辑写得飞起…

作者头像 李华
网站建设 2026/10/12 3:44:39

【Xilem0.4基础语法学与练】第27课 split 可拖拽分割面板

前言 文档参考:https://docs.rs/xilem/latest/xilem/view/fn.split.html 版本:Xilem 0.4 一、split基础概念 split 是双面板可拖拽分割布局原语,容器只能容纳两个子视图,中间有可拖动分割条,鼠标拖动分割条可以动态修…

作者头像 李华