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

Python实现食堂订单结算:列表访问、输入处理与金额累加方法

学院食堂点餐账单程序实现

实现思路

  • 菜单展示:遍历菜单列表,为每个菜品分配从1开始的编号,方便用户输入选择
  • 用户输入处理:循环接收用户输入,直到用户直接回车结束;解析输入的编号和数量,处理格式错误、无效编号等异常情况
  • 账单计算:用字典存储用户点单的菜品及数量,实时累加总数量和总金额
  • 账单输出:按指定格式打印点单明细和最终总计

完整代码

# 定义菜单
menu = [("Samosa", 15), ("Idli", 30), ("Maggie", 50), ("Dosa", 70), 
        ("Tea", 10), ("Coffee", 20), ("Sandwich", 35), ("ColdDrink", 25)]

# 打印菜单
print("=== 学院食堂菜单 ===")
for idx, (item, price) in enumerate(menu, start=1):
    print(f"{idx}. {item}: Rs {price}")

# 初始化账单数据
order = {}
total_items = 0
total_amount = 0

print("\n请输入菜品编号和数量(如:3 1),直接回车结束点餐:")
while True:
    user_input = input().strip()
    # 用户直接回车,结束点餐流程
    if not user_input:
        break
    
    # 拆分输入内容
    parts = user_input.split()
    if len(parts) != 2:
        print("输入格式错误,请输入「编号 数量」,例如:3 1")
        continue
    
    try:
        item_num = int(parts[0]) - 1  # 转换为列表索引(Python列表从0开始)
        quantity = int(parts[1])
    except ValueError:
        print("请输入有效的数字编号和数量")
        continue
    
    # 检查菜品编号是否有效
    if item_num < 0 or item_num >= len(menu):
        print(f"无效的菜品编号,请输入1到{len(menu)}之间的数字")
        continue
    
    item_name, item_price = menu[item_num]
    # 更新点单记录
    if item_name in order:
        order[item_name] += quantity
    else:
        order[item_name] = quantity
    
    # 累加总计数据
    total_items += quantity
    total_amount += quantity * item_price

# 打印最终账单
print("\n=== 您的账单 ===")
for item, qty in order.items():
    item_price = next(p for n, p in menu if n == item)
    print(f"{item}, {qty}, Rs {qty * item_price}")

print(f"\nTOTAL, {total_items} items, Rs {total_amount}")

关键部分说明

  • 列表访问:使用enumerate(menu, start=1)生成从1开始的菜品编号,用户输入的编号减1即可对应列表的索引,通过menu[item_num]直接获取菜品名称和单价。
  • 用户输入处理:通过strip()去除输入首尾空格,判断空输入结束循环;用split()拆分输入内容,捕获ValueError处理非数字输入,同时校验编号范围避免越界访问列表。
  • 金额累加:用字典order存储每个菜品的点单数量,每次输入有效时更新总数量和总金额,最后遍历字典计算每个菜品的小计并输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:45:46