Home > Back-end >  Python Debugging Using IF ELIF and ELSE Statements
Python Debugging Using IF ELIF and ELSE Statements

Time:09-02

so I am currently working through this debugging problem, and have been stuck for hours now so I figured I'd give this a shot. Here is the problem, where I am required to write code that will correctly output the proper costs of the combination the listed food items. I know the correct amount is $6.50, however I keep getting $6.00.

item = "nachos"
meat = "steak"
queso = True
guacamole = False
double_meat = True


#-----------------------------------------------------------
#You may modify the lines of code above, but don't move them!
#When you Submit your code, we'll change these lines to
#assign different values to the variables.
#
#Let's further expand our previous program to cover a broader
#menu variety. Instead of just burritos, now the program
#should cover three menu items: quesadillas, burritos, and
#nachos. Instead of separate booleans for steak and pork,
#we instead have a string that could be "steak", "pork",
#"chicken", "tofu", and "beef". We still have booleans for
#queso and guacamole, but we also have a boolean for double
#meat.
#
#Your code should calculate the price as follows:
#
# - The base price for a quesadilla is 4.00, for nachos is
#   4.50, and for burritos is 5.00.
# - If meat is steak or pork, add 0.50. Any other meat adds
#   no money to the price.
# - guacamole always adds 1.00 to the price.
# - queso adds 1.00 to the price UNLESS the item is nachos,
#   in which case it adds nothing.
# - double_meat adds 1.50 if the meat is steak or pork, or
#   1.00 otherwise.


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
    if double_meat == "steak" or double_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
    if double_meat == "steak" or double_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
    if double_meat == "steak" or double_meat == "pork":
        base_price  = 1.50
    else:
        base_price  = 1.00

print(base_price)

So, from what I'm gathering, my code is skipping the

"if double_meat == "steak" or double_meat == "pork":
   
 base_price  = 1.50"

portion of the code and going right into the

"else:
    base_price  = 1.00"

portion and I cannot seem to figure out why. Any help would be appreciated.

CodePudding user response:

Check the datatype you are comparing double_meat to, it is not a boolean in this case as you are setting it to up above.

CodePudding user response:

You are here comparing the value with string; but you declared it boolean above. Now as you declared "True" it wil work


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
   if double_meat or double_meat:
       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
     
   if double_meat or double_meat: #it now validating true/false
       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
   if double_meat or double_meat:
       base_price  = 1.50
   else:
       base_price  = 1.00

print(base_price)

  • Related