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

如何让Python披萨订单程序的if判断语句更简洁优雅?

S尺寸披萨计费代码优化方案

你当前的写法把两个附加品的所有Y/N组合都硬编码成独立判断分支,存在大量重复逻辑,后续维护、调价都很麻烦,可按照下面的思路优化:

核心优化思路

不要枚举所有条件组合算总价,把价格拆成「基础价+单项附加费」累加计算即可。对照你当前的定价可以拆解为:

  • S尺寸披萨基础价:15
  • 加意大利辣香肠额外收:2
  • 加额外芝士额外收:1
    拆分后完全匹配你现在的所有计费规则:
  • 不加任何附加品:15
  • 只加芝士:15+1=16
  • 只加辣香肠:15+2=17
  • 两个都加:15+2+1=18

第一步优化:消除重复判断+拆分计价

你当前所有分支都重复写了size == "S"的判断,完全可以把S码的逻辑单独抽成块,内部只需要判断附加品是否要加,不需要列全所有组合:

if size == "S":
    price = 15
    if add_pepperoni == "Y":
        price += 2
    if extra_cheese == "Y":
        price += 1
    total += price

这个写法的优势很明显:

  • 调价不需要翻遍所有分支找数值,基础价、单项附加费的数值都单独写在明面上,改起来不会错
  • 后续新增附加品(比如加蘑菇、加卷边)只需要新增一个单条件判断就行,不需要把所有附加品的Y/N组合全部枚举一遍——2个附加品要写4个分支,3个就要写8个,4个就要16个,枚举组合的写法随着功能增加会完全没法维护
  • 删掉了所有重复的条件判断,代码短了很多,逻辑也更清晰

第二步优化:适配全尺寸的可扩展写法

如果后续要支持M、L尺寸的披萨,可以把所有定价规则整理成配置字典,计费逻辑完全不用改动,只需要调整配置就行:

# 定价配置统一管理,后续做活动调价、新增尺寸/附加品直接改这里
price_config = {
    "S": {"base": 15, "pepperoni": 2, "cheese": 1},
    "M": {"base": 20, "pepperoni": 3, "cheese": 1},
    "L": {"base": 25, "pepperoni": 3, "cheese": 1}
}

if size in price_config:
    current_total = price_config[size]["base"]
    if add_pepperoni == "Y":
        current_total += price_config[size]["pepperoni"]
    if extra_cheese == "Y":
        current_total += price_config[size]["cheese"]
    total += current_total

额外小建议

可以在接收用户输入的时候统一做格式化处理,避免因为用户输入小写、前后带空格导致判断失效:

# 接收输入时自动去掉前后空格、转成大写,用户输s/y、 S / Y都能正常识别
size = input("请选择披萨尺寸(S/M/L): ").strip().upper()
add_pepperoni = input("是否加意大利辣香肠(Y/N): ").strip().upper()
extra_cheese = input("是否加额外芝士(Y/N): ").strip().upper()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:45:39