You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带用户输入的购物清单循环程序:金额累计与总计输出问题

购物清单程序问题修复

问题概述

开发的购物清单循环程序目标功能:

  • 用字典groceryList存储productID、weight、price,退出时打印完整清单;
  • 持续循环供用户选择商品,直至退出,每次计算该商品的重量(KG)×单价;
  • 退出时计算并打印所有商品的总金额。

当前存在的问题:

  1. 无法正确累计每次选购商品的金额;
  2. 不知道如何在退出时计算总金额;
  3. 无法正确打印购物清单至屏幕。

问题分析与修复方案

问题1:金额累计错误

原代码用total = lambda w, p: w * p重新赋值total变量,这只是定义了单商品金额的计算逻辑,没有实现累加。正确做法是每次将当前商品的金额(w * p)加到总金额变量中。

问题2:退出时总金额计算

可以在循环过程中维护总金额变量进行累加,退出时直接打印;也可在退出后遍历存储的商品数据重新计算,前者更高效。

问题3:购物清单打印错误

  • 原代码未将用户输入的重量w添加到kG列表,导致打印时重量数据为空;
  • 循环遍历长度取的是字典值列表的长度(固定为3),实际应取商品数量(即productID列表的长度)。

修正后的完整代码

# 存储商品信息的字典
groceryList = {"productID": [], "weight": [], "price": []}

# 提取各字段的列表(简化后续操作)
product_ids = groceryList["productID"]
weights = groceryList["weight"]
prices = groceryList["price"]

total_amount = 0

while True:
    try:
        choice = int(input("1.SELECT\n2.EXIT\n请选择1或2:"))
        if choice == 1:
            prod_id = int(input("请输入商品ID:"))
            weight = float(input("请输入购买重量(KG):"))
            price = float(input("请输入商品单价:"))
            
            # 将商品信息添加到对应列表
            product_ids.append(prod_id)
            weights.append(weight)
            prices.append(price)
            
            # 计算当前商品金额并累加到总金额
            current_item_total = weight * price
            total_amount += current_item_total
            print(f"\n当前商品金额:{current_item_total:.2f},累计总金额:{total_amount:.2f}")
            
        elif choice == 2:
            break
            
        else:
            print("无效选项,请重新选择。")
            
    except ValueError:
        print("输入格式错误,请输入数字。")

# 打印购物清单
print("\n\n=== 购物清单 ===")
print(f"{'商品ID':<8}{'重量(KG)':<12}{'单价':<8}{'金额':<8}")
for idx in range(len(product_ids)):
    item_total = weights[idx] * prices[idx]
    print(f"{product_ids[idx]:<8}{weights[idx]:<12.2f}{prices[idx]:<8.2f}{item_total:<8.2f}")

# 打印总金额
print(f"\n总金额:{total_amount:.2f}")

修复说明

  1. 金额累计:新增current_item_total计算单商品金额,通过total_amount += current_item_total实现累加;
  2. 总金额计算:循环中持续维护total_amount变量,退出时直接打印即可;
  3. 清单打印:
    • 补充了重量数据添加到列表的操作;
    • 以商品数量(len(product_ids))作为循环次数,保证所有商品都被打印;
    • 添加表头并使用格式化输出,让清单格式更清晰,金额显示保留两位小数更符合实际场景。

内容的提问来源于stack exchange,提问作者Rendevouz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:33:13