Python计算食谱食材成本输出采购总价和0单位问题如何修复
问题原因
你遇到的两个错误都是变量作用域和字段取值错误导致的,具体问题如下:
- 主代码里的
unit_qty被固定赋值为0,函数内部接收的用户输入的使用量是局部变量,主代码无法直接读取,所以打印永远显示0 - 打印时你取的
item[2]是食材的原始采购总价格,不是你计算出来的对应使用量的成本,计算后的成本你已经append到item末尾,但是没有读取这个新增字段 - 成本计算公式里的
COST、QTY没有从当前食材的信息里取值,会导致计算错误 - 函数里的
ingredient_cost先定义为列表,后续循环里被覆盖为单个浮点数,返回值只有最后一个食材的成本,完全没有被主代码用到
修复后的代码
# 主逻辑部分 compute_ingredient_cost(recipe_ingredients) for item in recipe_ingredients: print(f"The cost of {item[0]} is ${item[5]:.2f} for {item[4]} units.") print() def compute_ingredient_cost(recipe_ingredients): for item in recipe_ingredients: # 接收用户输入的使用量 unit_qty = float(input(f"Enter the qty of {item[0]} used: ")) # 从当前食材信息里取采购价、采购量计算成本 # 假设item结构为 [食材名称, 采购数量, 采购价格, 计算单位] use_cost = item[2] / item[1] * unit_qty # 把使用量、计算好的成本追加到食材信息里 item.append(unit_qty) item.append(use_cost) print()
改动说明
- 计算成本时同时把用户输入的使用量追加到食材信息里,主代码打印时直接取对应字段即可,不需要额外定义变量
- 修正了成本计算公式的取值,直接从当前遍历的食材里拿采购数量和采购价格
- 打印时直接读取追加到item里的使用量和计算后的成本,不再使用固定为0的变量
- 删掉了冗余的列表定义和无意义的返回值,因为列表是可变对象,函数内对
recipe_ingredients的修改会直接生效
内容的提问来源于stack exchange,提问作者dejae25
相关产品推荐
相关产品推荐

