Is there a more efficient way to check if what the user has entered (“food_ordered”) is on the “order_menu” without having to use “food_keys” or “food_names”?
order_menu = {("C", "Chips (Scoops)") : 2.80, ("F", "Fish (Battered)") : 2.90, ("Fc", "Fish (Crumbed)") : 4.90, ("Fib", "Filet (Battered)") : 6.90, ("Fic", "Filet (Crumbed)") : 6.90,
("Hd", "Hot Dog") : 2.60, ("S", "Sausage") : 2.60, ("Mp" , "Meat Patty (Homemade)") : 3.90, ("Cr", "Crabstick") : 2.50, ("Sr", "Spring Roll (Homemade)") : 2.80,
("Cr", "Curry Roll (Homemade)"): 2.80, ("Pof", "Potato Fritter (Homemade)") : 1.20, ("Paf", "Paua Fritter (Homemade)") : 5.90, ("Cn", "Chicken Nugget") : 1,
("Mh", "Mini Hot Dog (On a stick)") : 1.20, ("Pf", "Pineapple Fritter") : 2.50}
order_dictionary = {}
food_keys = []
food_names = []
for (food_key, food_name), price in order_menu.items():
food_keys.append(food_key)
food_names.append(food_name)
def order():
for food_name, price in order_menu.items():
print(f"• {food_name[1]:<35} {'('+ food_name[0] + ')': <10} ${price:.2f} each")
while True:
food_ordered = input("Order: (Type 'End' when you have finished) ").title()
if food_ordered == "End" and len(order_dictionary) > 0:
break
elif food_ordered in food_keys or food_ordered in food_names:
for (key, food_name), price in order_menu.items():
if food_ordered == key:
food_ordered = food_name
while True:
try:
quantity_food = int(input("Number of {}: ".format(food_ordered)))
break
except ValueError:
print("Please input NUMBERS only.")
if quantity_food > 10:
quantity_food_check = int(input("Are you sure you want x{} {}? (re-enter to confirm): ".format(quantity_food, food_ordered)))
order_dictionary[food_ordered] = quantity_food
else:
order_dictionary[food_ordered] = quantity_food
else:
print("Please enter an actual item on the menu!")
order()