COMM5007 A1 Individual Coding Assignment
🧾 两张表的鞋名对不上
语法错改完,程序能跑起来,你会觉得差不多了。去买一次鞋看看:第 7 行库存写的是 sneaker,第 15 行价格写的是 sneakers,socks 和 sock 也对不上。第 20 行用到的 items 从头到尾没定义,商品清单从哪来要你自己定,这一步定错,后面怎么改都会在某个商品上崩。拿库存的键当清单,结账查价格时报 KeyError;拿价格的键当清单,第 27 行查库存就先报错。
我的做法是改任何逻辑之前,先把两张表的键对齐,再让 items 直接用这份目录,取值用 .get(),取不到就提示顾客,程序不崩。生成式工具常常只改一边的拼写,改完记得两张表逐个对一遍。
🔁 说再试一次,程序却退出
第 24 和 28 行告诉顾客 Please try again,下一行是 break,整个购物直接结束。这种错不报异常,只测一个正常订单完全看不出来。题目把它单独列成一类:logical mistakes,代码不崩,但做不成它想做的事。
同类的还有几处:第 21 行 while 的条件写反了,把等号改对以后第一轮照样进不去;第 32 行问是否继续的 input 缩进到了循环外面;提示让人输 YES/NO,代码却拿小写的 no 去比;第 34 行拿 inventory 乘 prices,就算改到能跑,算出来的也不是这单的钱。
题目给了提示:先猜出代码想干什么。按顾客挑商品、填数量、结账的流程走一遍,这几处会一个个冒出来。
✍️ prompt 也要交上去
省事的做法是把整段代码贴进 ChatGPT,说一句 improve all,再把结果贴回去问一遍。题目把这条路写了出来,接着说它慢,还可能漏改。官方要看三样东西:final code,你在 prompt 和 reflection 里体现的分析过程,以及这些文字写得清不清楚。
所以每条 prompt 写一个你自己找到的问题:哪一行、现在会发生什么、你想要的行为。比如「第 27 行数量超过库存时直接退出,请改成让顾客重新输入数量,库存不变」。reflection 写工具改对了什么、漏了什么、你怎么验证的。一份 reflection 能说出工具哪一处改错了,比只写一句改好了更能说明你看懂了这段代码。提交会和其他人的比对,用自己的话写。
✅ 交之前跑这 6 组输入
改完以后,在同一次运行里把下面几组输入挨个喂进去,每组都对上了再交。只测一个正常订单,上面说的几类错大半看不出来。
| 输入 | 应该看到 |
|---|---|
| sneaker 先买 20 再买 6 | 第二次提示库存不够 |
| 数量输 abc | 提示重输,程序不退出 |
| 数量输 0 或 -3 | 提示数量要大于 0 |
| 输店里没有的商品 | 提示后回到选购 |






