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

Python列表求和代码结果不符问题排查与修复咨询

订单金额计算错误的原因分析与修复

问题原因

你的代码条件判断逻辑存在漏洞:每个菜品判断都是独立的if语句,且最后一个else仅和**最后一个if(即判断Cheeseburger的条件)**绑定,而非整个条件分支。

以输入Water Nachos Water Cheeseburger为例:

  • 处理Water时,会触发if i == "Water"加4,同时因为不满足if i == "Cheeseburger",会执行else再加5,单次Water实际累加9
  • 处理Nachos时,触发if i == "Nachos"加6,同样不满足Cheeseburger的条件,执行else加5,单次Nachos实际累加11
  • 处理Cheeseburger时,仅触发对应的if加10,不会执行else

最终总和:9+11+9+10=39,与你得到的错误结果完全吻合。

修复方案

方案1:改用elif串联条件判断

把独立的if改成elif,确保每个订单项只会匹配一个条件,else仅在没有匹配到任何预设菜品时执行:

x = input("What are your orders?")
orders = x.split()  # split()本身返回列表,无需额外转list
total = 0  # 避免用sum作为变量名,它是Python内置函数
for item in orders:
    if item == "Nachos":
        total += 6
    elif item == "Pizza":
        total += 6
    elif item == "Water":
        total += 4
    elif item == "Cheeseburger":
        total += 10
    else:
        total += 5
print(total)

方案2:用字典映射菜品价格(更简洁易维护)

把菜品和价格存入字典,遍历订单时直接取值,后续新增菜品只需修改字典,代码扩展性更强:

x = input("What are your orders?")
orders = x.split()
price_map = {
    "Nachos": 6,
    "Pizza": 6,
    "Water": 4,
    "Cheeseburger": 10
}
total = 0
for item in orders:
    total += price_map.get(item, 5)  # 找不到对应菜品时默认加5
print(total)

两种方案测试输入Water Nachos Water Cheeseburger,都会得到预期的24。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:55:18