Question: IN PYTHON LANGUAGE: I'm having difficulty with this program where I cannot get the code to recognize my print_menu function nor does it correctly modify
IN PYTHON LANGUAGE:
I'm having difficulty with this program where I cannot get the code to recognize my print_menu function nor does it correctly modify when prompted to do so. here is what is being asked of me to do as well as my code and its errors:









![current_date='January 1, 2016', cart_items=[]): self.customer_name = customer_name self.current_date = current_date self.cart_items =](https://dsd5zvtm8ll6.cloudfront.net/si.experts.images/questions/2024/09/66f3c74b2b9d1_29866f3c74aa44a7.jpg)


Here is my code so you can run and debug:
class ItemToPurchase: def __init__(self, name='none', price=0, quantity=0, description='none'): self.item_name = name self.item_description = description self.item_price = price self.item_quantity = quantity def print_item_cost(self): total = self.item_price * self.item_quantity print('%s %d @ $%d = $%d' % (self.item_name, self.item_quantity, self.item_price, total)) def print_item_description(self): print('%s: %s' % (self.item_name, self.item_description)) class ShoppingCart: def __init__(self, customer_name='none', current_date='January 1, 2016', cart_items=[]): self.customer_name = customer_name self.current_date = current_date self.cart_items = cart_items def add_item(self, itemToPurchase): self.cart_items.append(itemToPurchase) def remove_item(self, itemName): tremove_item = False for item in self.cart_items: if item.item_name == itemName: self.cart_items.remove(item) tremove_item = True break if not tremove_item: print('Item not found in cart. Nothing removed.') def modify_item(self, itemToPurchase): apple = int(input('Enter new quantity:')) tmodify_item = False for item in self.cart_items: if itemToPurchase == item.item_name: tmodify_item = True item.item_quantity == apple break if tmodify_item == False: print(' Item not found in cart. Nothing modified.') def get_num_items_in_cart(self): num_items = 0 for item in self.cart_items: num_items = num_items + item.item_quantity return num_items def get_cost_of_cart(self): total_cost = 0 cost = 0 for item in self.cart_items: cost = (item.item_quantity * item.item_price) total_cost += cost return total_cost def print_total(self): print("{}'s Shopping Cart - {}".format(self.customer_name, self.current_date)) print("Number of Items: %d " %self.get_num_items_in_cart()) total_cost = self.get_cost_of_cart() if(total_cost == 0): print('SHOPPING CART IS EMPTY') print(' Total: $%d' %(total_cost)) else: for item in self.cart_items: item.print_item_cost() print(' Total: $%d' %(total_cost)) def print_description(self): if len(self.cart_items) == 0: print('SHOPPING CART IS EMPTY') else: print('{}\'s Shopping Cart - {}'.format(self.customer_name, self.current_date)) print(' Item Descriptions') for item in self.cart_items: item.print_item_description()
#this print_menu section is where I think the code goes wrong
def print_menu(newCart): customer_Cart = newCart menu =(' MENU ' 'a - Add item to cart ' 'r - Remove item from cart ' 'c - Change item quantity ' "i - Output items' descriptions " 'o - Output shopping cart ' 'q - Quit ') command = '' while(command != 'q'): print(menu) command = input('Choose an option: ') while(command != 'a' and command != 'o' and command != 'i' and command != 'q' and command != 'r' and command != 'c'): command = input('Choose an option: ') if(command == 'a'): print(" ADD ITEM TO CART") item_name = input('Enter the item name: ') item_description = input('Enter the item description: ') item_price = int(input('Enter the item price: ')) item_quantity = int(input('Enter the item quantity: ')) itemtoPurchase = ItemToPurchase(item_name, item_price, item_quantity, item_description) customer_Cart.add_item(itemtoPurchase) elif(command == 'o'): print('OUTPUT SHOPPING CART') customer_Cart.print_total() elif(command == 'i'): print(' OUTPUT ITEMS\' DESCRIPTIONS') customer_cart.print_descriptions() elif(command == 'r'): print('REMOVE ITEM FROM CART') itemName = input('Enter name of item to remove: ') customer_Cart.remove_item(itemName) elif(command == 'c'): print(' CHANGE ITEM QUANTITY') itemName = input('Enter the item name: ') customer_Cart.modify_item(itemName) if __name__=='__main__': customer_name = input("Enter customer's name: ") current_date = input("Enter today's date: ") print(" Customer name: %s" %customer_name) print("Today's date: %s" %current_date) newCart = ShoppingCart(customer_name, current_date) print_menu(newCart) #vscode says print_menu is undefined
11.25 LAB*: Program: Online shopping cart (Part 2) This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program). (1) Extend the ItemToPurchase class to contain a new attribute. (2 pts) item_description (string) - Set to "none" in default constructor Implement the following method for the ItemToPurchase class. print_item_description() - Prints item_description attribute for an ItemToPurchase object. Has an Item To Purchase parameter. Ex. of print_item_description() output: Bottled Water: Deer Park, 12 oz. (2) Build the Shopping Cart class with the following data attributes and related methods. Note: Some can be method stubs (empty methods) initially, to be completed in later steps. Parameterized constructor which takes the customer name and date as parameters (2 pts) Attributes o customer_name (string) - Initialized in default constructor to "none" o current_date (string) - Initialized in default constructor to "January 1, 2016" o cart_items (list) Methods o add_item Adds an item to cart_items list. Has parameter Item ToPurchase. Does not return anything. o remove_item Removes item from cart_items list. Has a string (an item's name) parameter. Does not return anything. If item name cannot be found output this message: Item not found in cart. Nothing removed. o modify_item Modifies an item's quantity. Has parameter Item ToPurchase. Does not return anything. If item can be found (by name) in cart, modify item in cart. If item cannot be found (by name) in cart, output this message: Item not found in cart. Nothing modified. Tallecart, is o get_num_items_in_cart0 (2 pts) Returns quantity of all items in cart. Has no parameters. gel_cosLof_cart0 (2 pts) Determines and returns the total cost of items in cart. Has no parameters. o print_totalo Outputs total of objects in cart. . If cart is empty, output this message: SHOPPING CART IS EMPTY print_descriptions . Outputs each item's description Ex. of print_total output: John Doe's Shopping Cart - February 1, 2016 Number of Items: 8 Nike Romaleos 2 @ $189 $378 Chocolate chips 5 a $3 = $15 Powerbeats 2 Headphones 1 @ $128 = $128 Total: $ 521 Ex of print_descriptions() output: John Doe's Shopping Cart February 1, 2016 Itom Descriptions Nike Romaleos: volt color, Weightlifting shoes Chocolate Chips: Semi-sweet Powerbeats 2 Headphones: Bluetooth headphones (3) In main section of your code, prompt the user for a customer's name and today's date. Output the name and date. Create an object of type ShoppingCart (1 pt) Ex. Enter customer's name: John Doe Enter today's date: February 1, 2016 Customer name: John Doe Today's date: February 1, 2016 (4) In the main section of your code, implement the print_menu() function. print_menu() has a Shopping Cart parameter, and outputs a menu of options to manipulate the shopping cart. Each option is represented by a single character. Build and output the menu within the function. If the an invalid character is entered, continue to prompt for a valid choice. Hint: Implement Quit before implementing other options. Call print_menu() in the main function. Continue to execute the menu until the user enters q to Quit. (3 pts) Ex: MENU a - Add item to cart r - Remove item from cart Change item quantity i Output items' descriptions Output shopping cart 9 Quit C Choose an option: (5) Implement Output shopping cart menu option. (3 pts) Ex: OUTPUT SHOPPING CART John Doe's Shopping Cart Number of Items: 8 February 1, 2016 (5) Implement Output shopping cart menu option. (3 pts) Ex: OUTPUT SHOPPING CART John Doe's Shopping Cart Number of Items: 8 February 1, 2016 Nike Romaleos 2 @ $189 = $378 Chocolate Chips 5 @ $3 = $15 Powerbeats 2 Headphones 1 @ $128 = $128 Total: $521 (6) Implement Output item's description menu option. (2 pts) Ex. OUTPUT ITEMS' DESCRIPTIONS John Doe's Shopping Cart - February 1, 2016 Item Descriptions Nike Romaleos: Volt color, Weightlifting shoes Chocolate Chips: Semi-sweet Powerbeats 2 Headphones: Bluetooth headphones (7) Implement Add item to cart menu option. (3 pts) Ex: ADD ITEM TO CART Enter the item name: Nike Romaleos Enter the item description: implement Add item to cart menu option. (3 pts) Ex: ADD ITEM TO CART Enter the item name: Nike Romaleos Enter the item description: Volt color, Weightlifting shoes Enter the item price: 189 Enter the item quantity: 2 (8) Implement remove item menu option. (4 pts) Ex: REMOVE ITEM FROM CART Enter name of item to remove: Chocolate Chips (9) Implement Change item quantity menu option. Hint: Make new Item ToPurchase object before using Modifyltem() method. (5 pts) Ex: CHANGE ITEM QUANTITY Enter the item name: Nike Romaleos Enter the new quantity: 3 289182 1726290 2x320 LAB 111. AD et in a Quite Choose an option: CHANGE ITEM QUANTITY Enter the item name: Enter new quantity: Item not found in cart. Nothing modified. r MENU a - Add item to cart Remove item from cart Change item quantity i Output items' descriptions 0 - Output shopping cart 9 - Quit C Choose an option: CHANGE ITEM QUANTITY Enter the item name: Enter the new quantity: Item not found in cart. Nothing modified. Expected output ends with r MENU a - Add item to cart Remove item from cart C - Change item quantity i - Output items' descriptions 0 - Output shopping cart 9 Quit Choose an option: 13: Compare output 0/3 OUTPUT SHOPPING CART John Doe's Shopping Cart - February 1, 2016 Number of Items: 8 Nike Romaleos 2 @ $189 = $378 Chocolate Chips 5 @ $3 = $15 Powerbeats 2 Headphones i @ $128 = $128 Total: $521 Your output ends with MENU a - Add item to cart r - Remove item from cart C - Change item quantity i - Output items' descriptions 0 - Output shopping cart q - Quit Choose an option: OUTPUT SHOPPING CART John Doe's Shopping Cart - February 1, 2016 Number of Items: 9 Nike Romaleos 3 @ $189 = $567 Chocolate Chips 5 @ $3 = $15 Powerbeats 2 Headphones 1 @ $128 = $128 Total: $710 Expected output ends with r MENU a - Add item to cart Remove item from cart C - Change item quantity i - Output items' descriptions 0 - Output shopping cart 14: Compare output 072 Traceback (most recent call last): File "main.py", line 131, in
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
