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

Python自动售货机程序开发:用户选择汇总与总金额计算求助

Python自动售货机总金额计算修复方案

现有代码核心问题

  • 存储用户选择的choices列表定义在while循环内部,每次循环都会被重置为空,无法累计用户的历史选择记录
  • 初始userchoice被定义为空元组,和后续判断的0类型不匹配,存在逻辑隐患
  • 用户选择是商品序号,用float转换格式不合理,应该用int
  • 缺少商品编号和对应价格的映射规则,原有Sum函数逻辑完全不符合累加需求
  • 欢迎语、商品列表放在循环内部,每次选择都会重复打印,使用体验差

修正后可运行代码

def main():
    # 定义商品编号和对应价格、名称的映射,后续改价格加商品直接改这里就行
    goods_map = {
        1: {"name": "Dr.Pepper", "price": 1.50},
        2: {"name": "Mtn.Dew", "price": 1.50},
        3: {"name": "Water", "price": 1.00},
        4: {"name": "Doritos", "price": 1.75},
        5: {"name": "Snickers", "price": 1.50},
        6: {"name": "Gum", "price": 0.50}
    }
    userchoice = None
    choices = []
    # 欢迎和商品列表只打印一次
    print("欢迎使用自动售货机!")
    show_options(goods_map)

    while userchoice != 0:
        userchoice = int(input("请输入对应商品的编号选择商品,输入0退出结算:"))
        if userchoice == 0:
            # 退出时计算总金额
            total = sum([goods_map[c]["price"] for c in choices])
            print(f"您选购的商品总金额为:${total:.2f}")
            # 支付校验、找零逻辑
            if total > 0:
                while True:
                    pay_amount = float(input("请输入支付金额:"))
                    if pay_amount < total:
                        print("支付金额不足,请重新输入")
                    else:
                        change = pay_amount - total
                        print(f"支付成功,找零:${change:.2f},感谢您的购买!")
                        break
            else:
                print("您未选购任何商品,欢迎下次光临")
        elif userchoice in goods_map:
            choices.append(userchoice)
            print(f"您选择了:{goods_map[userchoice]['name']},价格${goods_map[userchoice]['price']:.2f}")
        else:
            print("无效的选择,请重新输入")


def show_options(goods_map):
    for num, info in goods_map.items():
        print(f"\t{num}. {info['name']} - ${info['price']:.2f}")


if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:05