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

如何无数组/列表/集合保存循环输入?点餐系统订单重复问题求助

问题解决思路

你的问题根源在于只用单个变量保存订单信息,每次循环都会覆盖之前的数据,最终打印时只能显示最后一次输入的内容。由于系统最多支持3位顾客,直接为每位顾客单独声明变量即可解决,无需使用数组、列表等结构。

修改后的完整代码
strt = int(input("1: 点餐\n2: 退出\n"))
if strt == 1:
    print("\n菜单:")
    print("主餐:\n      ID       类型        价格")
    print(
        "      1  鸡肉           90.00\n      2  猪肉              105.00\n      3  鱼肉              120.00\n      4  牛肉              135.00"
    )
    print("配菜:\n      ID      类型         价格")
    print(
        "      1  蒸米饭      20.00\n      2  炒玉米     35.00\n      3  土豆泥   50.00\n      4  蒸蔬菜  65.00"
    )
    print("饮品:\n      ID      类型         价格")
    print(
        "      1  矿泉水     25.00\n      2  冰茶          35.00\n      3  苏打水              45.00\n      4  果汁       55.00"
    )
    print(
        "请输入你要点餐的ID。如果该类别不需要点餐,请输入0。\n"
    )

    cust = int(input("你的同行人数是多少? "))
    ordr = 0
    msoc = 0
    pwno = 0
    # 为每位顾客单独声明订单变量
    main1, main2, main3 = 0, 0, 0
    side1, side2, side3 = 0, 0, 0
    drnk1, drnk2, drnk3 = 0, 0, 0
    mprc1, mprc2, mprc3 = 0.0, 0.0, 0.0
    sprc1, sprc2, sprc3 = 0.0, 0.0, 0.0
    dprc1, dprc2, dprc3 = 0.0, 0.0, 0.0
    mtot = 0.0
    stot = 0.0
    dtot = 0.0

    while ordr != cust and cust <= 3:
        ordr = ordr + 1
        print(f"\n第{ordr}份订单:")

        if ordr <= cust or msoc == 'n':
            # 根据当前订单号,将输入存入对应顾客的变量
            if ordr == 1:
                main = int(input("  主餐: "))
                main1 = main
                if main == 1:
                    mprc1 = 90.0
                    print("       鸡肉")
                elif main == 2:
                    mprc1 = 105.0
                    print("       猪肉")
                elif main == 3:
                    mprc1 = 120.0
                    print("       鱼肉")
                elif main == 4:
                    mprc1 = 135.0
                    print("       牛肉")
                elif main == 0:
                    print("       无")

                side = int(input("  配菜: "))
                side1 = side
                if side == 1:
                    sprc1 = 20.0
                    print("       蒸米饭")
                elif side == 2:
                    sprc1 = 35.0
                    print("       炒玉米")
                elif side == 3:
                    sprc1 = 50.0
                    print("       土豆泥")
                elif side == 4:
                    sprc1 = 65.0
                    print("       蒸蔬菜")
                elif side == 0:
                    print("       无")

                drnk = int(input("  饮品: "))
                drnk1 = drnk
                if drnk == 1:
                    dprc1 = 25.0
                    print("       矿泉水")
                elif drnk == 2:
                    dprc1 = 35.0
                    print("       冰茶")
                elif drnk == 3:
                    dprc1 = 45.0
                    print("       苏打水")
                elif drnk == 4:
                    dprc1 = 55.0
                    print("       果汁")
                elif drnk == 0:
                    dprc1 = 0.0
                    print("       无")
            elif ordr == 2:
                main = int(input("  主餐: "))
                main2 = main
                if main == 1:
                    mprc2 = 90.0
                    print("       鸡肉")
                elif main == 2:
                    mprc2 = 105.0
                    print("       猪肉")
                elif main == 3:
                    mprc2 = 120.0
                    print("       鱼肉")
                elif main == 4:
                    mprc2 = 135.0
                    print("       牛肉")
                elif main == 0:
                    print("       无")

                side = int(input("  配菜: "))
                side2 = side
                if side == 1:
                    sprc2 = 20.0
                    print("       蒸米饭")
                elif side == 2:
                    sprc2 = 35.0
                    print("       炒玉米")
                elif side == 3:
                    sprc2 = 50.0
                    print("       土豆泥")
                elif side == 4:
                    sprc2 = 65.0
                    print("       蒸蔬菜")
                elif side == 0:
                    print("       无")

                drnk = int(input("  饮品: "))
                drnk2 = drnk
                if drnk == 1:
                    dprc2 = 25.0
                    print("       矿泉水")
                elif drnk == 2:
                    dprc2 = 35.0
                    print("       冰茶")
                elif drnk == 3:
                    dprc2 = 45.0
                    print("       苏打水")
                elif drnk == 4:
                    dprc2 = 55.0
                    print("       果汁")
                elif drnk == 0:
                    dprc2 = 0.0
                    print("       无")
            elif ordr == 3:
                main = int(input("  主餐: "))
                main3 = main
                if main == 1:
                    mprc3 = 90.0
                    print("       鸡肉")
                elif main == 2:
                    mprc3 = 105.0
                    print("       猪肉")
                elif main == 3:
                    mprc3 = 120.0
                    print("       鱼肉")
                elif main == 4:
                    mprc3 = 135.0
                    print("       牛肉")
                elif main == 0:
                    print("       无")

                side = int(input("  配菜: "))
                side3 = side
                if side == 1:
                    sprc3 = 20.0
                    print("       蒸米饭")
                elif side == 2:
                    sprc3 = 35.0
                    print("       炒玉米")
                elif side == 3:
                    sprc3 = 50.0
                    print("       土豆泥")
                elif side == 4:
                    sprc3 = 65.0
                    print("       蒸蔬菜")
                elif side == 0:
                    print("       无")

                drnk = int(input("  饮品: "))
                drnk3 = drnk
                if drnk == 1:
                    dprc3 = 25.0
                    print("       矿泉水")
                elif drnk == 2:
                    dprc3 = 35.0
                    print("       冰茶")
                elif drnk == 3:
                    dprc3 = 45.0
                    print("       苏打水")
                elif drnk == 4:
                    dprc3 = 55.0
                    print("       果汁")
                elif drnk == 0:
                    dprc3 = 0.0
                    print("       无")

        msoc = input("这份订单是否正确 (y/n)? ")
        if msoc == "y":
            pwno = input("继续下一份订单 (y/n)? ")
            if pwno == "y":
                continue
            elif pwno == "n":
                ordr = cust
                continue
        elif msoc == "n":
            ordr = ordr - 1
            continue
    cncl = input("取消所有订单 (y/n)? ")
    if cncl == "y":
        print("")
    elif cncl == "n":
        xcld = input("从总价中排除某个菜品 (y/n)? ")
        if xcld == "y":
            frwo = int(input("来自哪份订单? "))
            wiwe = int(input("要排除哪个菜品? "))
            # 处理菜品排除逻辑
            if frwo == 1:
                if wiwe == 1:
                    mprc1 = 0.0
                elif wiwe == 2:
                    sprc1 = 0.0
                elif wiwe == 3:
                    dprc1 = 0.0
            elif frwo == 2:
                if wiwe == 1:
                    mprc2 = 0.0
                elif wiwe == 2:
                    sprc2 = 0.0
                elif wiwe == 3:
                    dprc2 = 0.0
            elif frwo == 3:
                if wiwe == 1:
                    mprc3 = 0.0
                elif wiwe == 2:
                    sprc3 = 0.0
                elif wiwe == 3:
                    dprc3 = 0.0
        print(f"\n{str(cust)}人用餐订单")
        ordr = 0
        while ordr != cust and cust <= 3:
            ordr = ordr + 1
            print(f"第{ordr}份订单:")
            # 根据订单号读取对应顾客的订单数据
            if ordr == 1:
                main = main1
                mprc = mprc1
                side = side1
                sprc = sprc1
                drnk = drnk1
                dprc = dprc1
            elif ordr == 2:
                main = main2
                mprc = mprc2
                side = side2
                sprc = sprc2
                drnk = drnk2
                dprc = dprc2
            elif ordr == 3:
                main = main3
                mprc = mprc3
                side = side3
                sprc = sprc3
                drnk = drnk3
                dprc = dprc3
            
            # 转换ID为菜品名称
            if main == 1:
                main_name = "鸡肉"
            elif main == 2:
                main_name = "猪肉"
            elif main == 3:
                main_name = "鱼肉"
            elif main == 4:
                main_name = "牛肉"
            elif main == 0:
                main_name = "无"
                mprc = 0.0

            if side == 1:
                side_name = "蒸米饭"
            elif side == 2:
                side_name = "炒玉米"
            elif side == 3:
                side_name = "土豆泥"
            elif side == 4:
                side_name = "蒸蔬菜"
            elif side == 0:
                side_name = "无"
                sprc = 0.0

            if drnk == 1:
                drnk_name = "矿泉水"
            elif drnk == 2:
                drnk_name = "冰茶"
            elif drnk == 3:
                drnk_name = "苏打水"
            elif drnk == 4:
                drnk_name = "果汁"
            elif drnk == 0:
                drnk_name = "无"
                dprc = 0.0
            
            # 累加总价
            mtot += mprc
            stot += sprc
            dtot += dprc
            print(f"主餐: {main_name}  价格: {mprc}")
            print(f"配菜: {side_name}  价格: {sprc}")
            print(f"饮品: {drnk_name}  价格: {dprc}\n")

        print(f"主餐总价: {mtot}\n配菜总价: {stot}\n饮品总价: {dtot}")
elif strt == 2:
    print("感谢使用本程序。")
关键改动说明
  1. 变量拆分:为1-3位顾客分别创建主餐、配菜、饮品的ID和价格变量,避免单变量覆盖数据。
  2. 订单存储逻辑:接收订单时,根据当前订单号将输入值存入对应顾客的变量中。
  3. 订单打印逻辑:打印时根据订单号读取对应顾客的变量,确保每个订单显示独立内容。
  4. 补充排除功能:实现了排除指定订单菜品的逻辑,修改对应菜品价格为0以保证总价计算正确。

内容的提问来源于stack exchange,提问作者ab2.5

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:37:35