库存填了0,程序却提示“漏填”,问题可能藏在一句 if not value 里。Python 中0和 None 都是假值,但它们在业务上的含义并不相同。
这个例子用自建 JSON 教学样本,故意在修前版保留错误判断,再用同一套验收检查修复。它不是客户事故,也不是真实库存表。
先把0的含义说清楚
本例约定:
| 输入 | 结果 |
|---|---|
| 整数0、正整数 | 合法库存 |
null、空字符串、纯空白 |
缺失 |
| 负数、小数、数字字符串、布尔值 | 不接受 |
业务规则要先确定。某个商品重量不能为0,并不意味着库存也不能为0。
缺失、类型和范围分别判断
原修后实现如下:
1 | def validate_stock(value): |
布尔值在 Python 中与整数类型有关,因此本例先排除它。缺失判断也不再使用会把0一起拦住的真假值检查。Python:真值测试与布尔类型
用同一套测试确认变化
给 Codex 的任务可以这样写:
1 | 先用数值0复现失败,保持输入与同一套验收测试。 |
2026年10月26日 Windows / Python 3.13.5 的原运行结果:修前8项测试中1项失败,正好是0;修后同一份8项全部通过。6行样例通过数从2变3,A01的0库存通过,其余5行结果不变。输入和测试文件的哈希保持一致。
下载后自己复现
下载修前、修后、样例与测试在解压目录运行:
1 | python -B test_stock.py --implementation before |
第一条是故意保留错误的教学版本,原记录中预期退出1;第二条预期通过。运行脚本不调用 API。
本文于2026年10月27日整理,没有重跑原实验。验证范围仅为这些教学数据与边界,不包含 Excel/CSV 读取、真实库存、重复SKU或并发同步。