W01-D01 学员任务书|给商城做一个金额核对工具

课前:保留自己的判断 · 课堂讲解 · 课后:查错与复验 · 验收清单

业务任务

商城运营要核对商品明细:轻羽无线鼠标 P1001,单价 129.00 元,买 2 件。工具要允许重新输入数量,显示商品、单价、数量和行金额。先手算,再用程序核对。今天不含优惠、运费、库存或支付,也不需要网页。

商品编号和单价对应商城商品资料,数量对应购买数量,行金额对应订单明细。今天把这条计算单独做成终端脚本,后续继续扩展为商城订单规则。

起点:第一天从自己的新目录开始

领取讲师发放的 W01-D01 学生起点包,把其中内容复制到自己的空目录 w01-order-rules,用 TRAE 打开。已有同名个人目录时另建目录,不覆盖原文件。第一天没有“昨天的仓库”。

w01-order-rules/
├─ README.md
├─ .gitignore
├─ contract/                   # 商品资料和规则,今天只人工查看
├─ labs/d01_language_lab.py    # 先预测、再运行的小实验
├─ src/order_rules.py          # 学生自己补全的金额工具
├─ checks/check_d01.py         # 给定的验收工具,今天只运行和读结果
└─ evidence/                  # 手算、运行、排错和 AI 审查记录

教师提供业务资料、TODO 骨架、记录模板和验收工具,不提供本任务完整实现。基础语法实验用另一组数据;学生独立完成 P1001 的脚本。不得通过改检查工具、删除用例或让 AI 整体生成作业来代替实现。

规则与输入输出

项目本日约定
商品product_id 为 P1001;product_name 为轻羽无线鼠标
单价unit_price_yuan 从字符串构造 Decimal,初值 129.00;不从 float 转换
数量input() 读入,.strip() 清理两端空白,int() 转成 quantity
计算line_total_yuan 使用单价乘数量;所有金额为人民币元
输出包含商品编号、商品名、单价、数量、行金额;数量一行写为 数量:件数,其余标签可自行优化;金额使用 .2f 展示
正常使用范围单价为合法两位小数文本,数量为正整数;今天不接受终端输入价格
错误观察二、空输入、2.5 保留 ValueError;0、负数记录为“能转换但业务不合法,待 D02 修复”

contract/contract_snapshot.md 是整周规则。本日不要求实现完整订单、不读取 JSON,不增加条件、循环、函数或异常捕获。

分段完成,每段先预测再运行

步骤操作与检查点为什么做/商城哪里用
1 环境记录当前目录、Python 3.12.x、解释器路径;创建 .venv;运行一行输出确认将来金额脚本和商城服务由哪个 Python 执行
2 数据在实验文件观察文本、整数、Decimal、float、bool;比较文本重复和金额乘法同一个“2”可能是文本或件数,类型会改变计算含义
3 商品在项目文件补编号、名称、单价;先输出并核对商品资料对应商城商品字段;避免拿错价格
4 数量补终端读取、去空白、整数转换;观察转换前后的类型为购买数量进入金额计算作准备
5 金额写下手算,补乘法和带单位的输出;每次换数量重新运行对应订单明细,不能固定打印 258.00
6 排错故意拼错一个已有变量名,保留错误后只修这一处能从报错定位自己的代码,避免让 AI 整份重写
7 AI 改动保存可运行基线,请 AI 只改善一处输出标签;检查 diff 并复验避免优化文字时把商城金额规则改坏

项目根目录运行:

python src/order_rules.py
python checks/check_d01.py

第一次检查应提示 STUDENT_TODO 未完成并返回失败;这是骨架尚未完成,不是环境故障。今天只使用检查工具,不要求读懂其中函数、循环和自动检查写法。

用例与独立变化

先在 evidence/manual_calculation.md 写预测,再运行并粘贴原始输出。

组别单价/输入数量要核对的行为
A129.00/2商品、单价、数量和行金额均可解释
B129.00/3只改输入,结果随之变化
C129.00/1最小正常数量仍显示两位金额
D129.00/2两端空白被清理,结果与 A 相同
E 独立变化人工替换为 P1003/随行保温杯/89.00,数量 4先查商品卡并预测;不能只把最终输出改成常量;结束后恢复 P1001
F 转换失败二、空输入、2.5,分别运行保存 ValueError,不打印伪造的成功结果
G 业务缺口0、-1,分别运行写清实际行为为何不满足商城正整数要求;今天不要求修复

G 组不是金额业务验收通过。自动检查只能验证部分行为,独立变化、个人解释和 Git 审查仍需现场完成。

提交与口头说明

  • src/order_rules.py 与完成的语言实验;保持 P1001、129.00 的默认数据。
  • evidence/environment_and_git.md:环境输出、基线与最终提交标识、同伴复现结果。
  • evidence/manual_calculation.md:A—G 预测和实际结果;未执行的留空并说明。
  • evidence/error_and_ai_review.md:完整错误、原因、最小修复、复验,AI 提问、差异与接受或拒绝理由。
  • 现场解释:数量文本在哪里变成整数?单价从哪里来?最终显示为什么会随输入变化?0 能运行为什么仍不合格?

必做工作在课内完成。提前完成者可换商品再次核对并说明差异,不提前学习新框架。下节课带同一项目和 G 组缺口继续。