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)