cloning over all the old files

This commit is contained in:
2025-08-04 12:58:29 -04:00
parent 2ec6f34b9a
commit eac63406a2
47 changed files with 3031 additions and 0 deletions
@@ -0,0 +1,119 @@
menu = {
1: {"name": 'espresso', "price": 1.99},
2: {"name": 'coffee', "price": 2.50},
3: {"name": 'cake', "price": 2.79},
4: {"name": 'soup', "price": 4.50},
5: {"name": 'sandwich', "price": 4.99}
}
def calculate_subtotal(order):
"""Calculates the subtotal of an order.
[IMPLEMENT ME]
1. Add up the prices of all items in the order.
2. Round the result to 2 decimal places and return it.
Args:
order (list): A list of dicts, where each dict represents an item with a name and price.
Returns:
float: The subtotal of all item prices, rounded to 2 decimal places.
"""
print('Calculating bill subtotal...')
### WRITE SOLUTION HERE
subtotal_calc = float(0.00)
for item in order:
subtotal_calc += item['price']
return round(subtotal_calc, 2)
def calculate_tax(subtotal):
"""Calculates the tax of an order.
[IMPLEMENT ME]
1. Calculate 15% of the subtotal.
2. Round the tax to 2 decimal places and return it.
Args:
subtotal (float): The subtotal amount.
Returns:
float: The calculated tax amount, rounded to 2 decimal places.
"""
print('Calculating tax from subtotal...')
### WRITE SOLUTION HERE
tax_rate = 0.15
tax = subtotal * tax_rate
return round(tax, 2)
def summarize_order(order):
"""Summarizes the order.
[IMPLEMENT ME]
1. Calculate subtotal and tax.
2. Compute the total (subtotal + tax) and round to 2 decimal places.
3. Extract the item names and return them with the total.
Args:
order (list): A list of dicts, where each dict represents an item with a name and price.
Returns:
tuple: A list of item names and the total amount (rounded to 2 decimal places).
"""
### WRITE SOLUTION HERE
item_details = list()
for item in order:
item_details.append((item['name'], item['price']))
subtotal = calculate_subtotal(order)
subtotal = round(subtotal, 2)
tax = calculate_tax(subtotal)
total = round(subtotal + tax, 2)
names = [item['name'] for item in order]
return names, total
# This function is provided for you and will print out the items in an order
def print_order(order):
print('You have ordered ' + str(len(order)) + ' items')
items = [item["name"] for item in order]
print(items)
return order
# This function is provided for you and will display the menu
def display_menu():
print("------- Menu -------")
for selection in menu:
print(f"{selection}. {menu[selection]['name'] : <9} | {menu[selection]['price'] : >5}")
print()
# This function is provided for you and will create an order by prompting the user to select menu items
def take_order():
display_menu()
order = []
count = 1
for i in range(3):
item = input('Select menu item number ' + str(count) + ' (from 1 to 5): ')
count += 1
order.append(menu[int(item)])
return order
'''
Here are some sample function calls to help you test your implementations.
Feel free to change, uncomment, and add these as you wish.
'''
def main():
order = take_order()
print_order(order)
names, total = summarize_order(order)
print("Order summary:")
for name, price in [(item['name'], item['price']) for item in order]:
print(f" {name}: ${price:.2f}")
print(f"Total: ${total:.2f}")
if __name__ == "__main__":
main()