Python条件语句调试:食品定价代码计算结果不符问题
食品价格计算代码逻辑错误排查
核心错误原因
你代码里的double_meat判断完全逻辑错位:
double_meat是布尔类型变量(值为True或False),但你却把它和字符串"steak"/"pork"做相等比较。布尔值和字符串永远不可能相等,所以if double_meat == "steak" or double_meat == "pork"的条件永远为False,必然执行else分支加1.00,这就是结果少了0.50的原因。
正确逻辑修正
根据需求,double_meat的加价规则是:只有当double_meat为True时才加价,加价金额由meat的类型决定:
- 若
meat是"steak"或"pork",加1.50 - 其他肉类加1.00
- 若
double_meat为False,不加价
同时还要补充你遗漏的queso规则:queso对nachos不加价,你的nachos分支里完全没处理这个逻辑,虽然示例里不影响,但需要补上保证代码完整。
修正后的完整代码
item = "nachos" meat = "steak" queso = True guacamole = False double_meat = True if item == "quesadilla": base_price = 4.0 if meat == "steak" or meat == "pork": base_price += 0.50 if guacamole: base_price += 1.00 if queso: base_price += 1.00 # 修正double_meat判断逻辑 if double_meat: if meat == "steak" or meat == "pork": base_price += 1.50 else: base_price += 1.00 elif item == "nachos": base_price = 4.50 if meat == "steak" or meat == "pork": base_price += 0.50 if guacamole: base_price += 1.00 # 补充nachos的queso规则 if queso and item != "nachos": base_price += 1.00 # 修正double_meat判断逻辑 if double_meat: if meat == "steak" or meat == "pork": base_price += 1.50 else: base_price += 1.00 elif item == "burrito": base_price = 5.0 if meat == "steak" or meat == "pork": base_price += 0.50 if guacamole: base_price += 1.00 if queso: base_price += 1.00 # 修正double_meat判断逻辑 if double_meat: if meat == "steak" or meat == "pork": base_price += 1.50 else: base_price += 1.00 print(base_price) # 输出6.5,符合预期
验证示例计算
按照你的输入参数:
- 基础价:nachos 4.50
- 加steak溢价:+0.50 → 5.00
- guacamole为False:不加价
- queso为True但item是nachos:不加价
- double_meat为True且meat是steak:+1.50 → 6.50
最终结果正好是预期的6.50美元。
内容的提问来源于stack exchange,提问作者B L
相关产品推荐
相关产品推荐

