python 谁能告诉我这个代码有什么问题吗?这是初级水平

8wigbo56  于 2023-06-20  发布在  Python
关注(0)|答案(4)|浏览(143)

我对Python完全陌生,我正在通过一门课程在线学习它,并在练习中卡住了。我不能找出问题在所有,我觉得我的解决方案的练习是好的,但每当我选择的选项添加奶酪到我的“S”比萨饼,它不添加它在最终的价格,即使我已经写在我的代码,任何人都可以解释我什么是我的解决方案的问题?
我不知道我的解释是否正确,但我添加了一个屏幕截图,以使其更容易理解。
任何帮助都深表感谢;-;我是一个新手,我相信这将是很容易的专业人士解释这样一个简单的练习的问题,半。我想不出这个问题。
这是我试着把奶酪加到S披萨上时得到的结果,其他尺寸的披萨效果都很好,我一点也不明白是什么问题。
终端:-

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.

我已经附加图像,以便其更容易为你们理解。
screenshot
代码如下:

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}.")
uemypmqf

uemypmqf1#

有了这么多嵌套的if语句,您一定会遇到这种问题。这里有一个稍微更可扩展的解决方案:

options = {
    'S': (25, 3, 1),
    'M': (20, 3, 1),
    'L': (15, 2, 1),
}

prices = options[size]
price = prices[0]

if add_pepperoni == 'Y':
    price += prices[1]
if extra_cheese == 'Y':
    price += prices[2]
lbsnaicq

lbsnaicq2#

看看代码的逻辑,我可以说,只有在已经有意大利辣香肠的情况下,才可以在比萨饼上添加奶酪。

if L:
  ...
  if P:
    ...
    if C:
      ...
if M:
  ...
  if P:
    ...
    if C:
      ...
if S:
  ...
  if P:
    ...
    if C:
      ...

不像是:

if L:
  ...
  if P:
    ...
  if C:
    ...
if M:
  ...
  if P:
    ...
  if C:
    ...
if S:
  ...
  if P:
    ...
  if C:
    ...

请注意,它可能不是解决这个问题的更好的设计,但作为初学者,我们必须从某个地方开始并改进:-)
祝你有一个愉快的编码之旅,并发现算法逻辑!

ejk8hzay

ejk8hzay3#

您面临的问题是,用于添加cheese的if语句嵌套在用于添加pepperoni的if语句中。这意味着只有在您还选择添加意大利辣香肠时,才会执行添加奶酪的操作。您可以通过取消cheese和pepperoni的if语句的嵌套来纠正这一点,以便始终执行这两个语句。

2vuwiymt

2vuwiymt4#

奶酪的if条件在意大利辣香肠的if条件之下。由于您选择不吃意大利辣香肠,因此奶酪上的if条件永远不会触发。只需将if条件移一个选项卡

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

相关问题