Python披萨计价代码问题:S尺寸披萨加芝士未计入总价
Python披萨订单计算器错误排查:S尺寸额外芝士费用未计入总价
问题现象
选择S尺寸披萨且仅添加额外芝士时,芝士的1美元费用未计入最终总价,但M/L尺寸的功能看似正常。
终端测试输出
Welcome to Python Pizza Deliveries! What size pizza do you want? S, M, or L S Do you want pepperoni? Y or N N Do you want extra cheese? Y or N Y Your final bill is: $15.
原代码
print("Welcome to Python Pizza Deliveries!") size = input("What size pizza do you want? S, M, or L ") add_pepperoni = input("Do you want pepperoni? Y or N ") extra_cheese = input("Do you want extra cheese? Y or N ") price = 0 if size == "L": price = 25 if add_pepperoni == "Y": price += 3 if extra_cheese == "Y": price += 1 if size == "M": price = 20 if add_pepperoni == "Y": price += 3 if extra_cheese == "Y": price += 1 if size == "S": price = 15 if add_pepperoni == "Y": price += 2 if extra_cheese == "Y": price += 1 print(f"Your final bill is: ${price}.")
错误原因
所有尺寸的extra_cheese判断都嵌套在了add_pepperoni == "Y"的分支内部,这意味着只有选择添加pepperoni时,才会检查是否添加额外芝士。你测试S尺寸时没选pepperoni,所以芝士加价的代码根本没机会执行。M/L尺寸其实也存在同样的逻辑漏洞,只是你没测试「不加pepperoni只加芝士」的场景而已。
修复后的代码
把芝士加价的判断从pepperoni的分支里提出来,放在对应尺寸的代码块中,和pepperoni的判断同级:
print("Welcome to Python Pizza Deliveries!") size = input("What size pizza do you want? S, M, or L ") add_pepperoni = input("Do you want pepperoni? Y or N ") extra_cheese = input("Do you want extra cheese? Y or N ") price = 0 if size == "L": price = 25 if add_pepperoni == "Y": price += 3 if extra_cheese == "Y": price += 1 if size == "M": price = 20 if add_pepperoni == "Y": price += 3 if extra_cheese == "Y": price += 1 if size == "S": price = 15 if add_pepperoni == "Y": price += 2 if extra_cheese == "Y": price += 1 print(f"Your final bill is: ${price}.")
内容的提问来源于stack exchange,提问作者Zo.A
相关产品推荐
相关产品推荐

