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:

IN PYTHON LANGUAGE: I'm having difficulty with this program where I cannotget the code to recognize my print_menu function nor does it correctlymodify when prompted to do so. here is what is being askedof me to do as well as my code and its errors: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 = descriptionself.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 foritem in self.cart_items: if item.item_name == itemName: self.cart_items.remove(item) tremove_item = True break

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 print menu (newCart) File "main.py", line 113, in print_menu customer_cart.print_descriptions() NameError: name 'customer cart' is not defined John Doe February 1, 2016 a Nike Romaleos Volt color, Weightlifting shoes 189 2 a Chocolate Chips Semi-sweet Input 3 5 a Powerbeats 2 Headphones Bluetooth headphones 128 1 i 9 name: Enter today's date: Customer name: John Doed Today's date: February 1, 2016 MENU Add item to carte main.py Load default template... 4 6 7 8 9 10 1 class ItemToPurchase: 2 3 def _init__(self, name='none', price=0, quantity=0, description='none'): self.item_name = name 5 self.item_description = description self.item_price = price self.item_quantity = quantity def print_item_cost (self): total - self.item_price* self.item_quantity 11 print("%s %d @$%d = $%d' % (self.item_name, self.item_quantity, self.item_price, total)) 12 13 def print_item_description(self): 14 print('%s:%s' % (self.item_name, self.item_description)) 15 16 17 class ShoppingCart: 18 19 def __init__(self, customer_name='none', current_date='January 1, 2016', cart_items=[]): 20 self.customer_name = customer_name 21 self.current_date = current_date 22 self.cart_items - cart_items 23 def add_item(self, itemToPurchase): 25 self.cart_items.append(itemToPurchase) 26 27 def remove_item(self, itemName): 28 tremove item = False 29 for item in self.cart_items: 30 if item.item_name == itemName: 31 self.cart_items.remove(item) 32 tremove_item = True 33 break 34 if not tremove_item: 35 print('Item not found in cart. Nothing removed.') 36 37 38 def modify item(self, itemToPurchase): 39 apple = int(input('Enter new quantity: ')) 40 tmodify_item = False 41 for item in self.cart_items: 42 if itemToPurchase == item.item_name: 43 tmodify_item = True 44 item.item_quantity -- apple 45 break 46 if tmodify_item - False: 24 36 37 38 39 40 41 42 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.') 43 44 45 46 47 48 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 49 50 51 52 53 54 55 56 57 58 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 59 60 61 62 63 64 65 66 67 68 69 70 BM68588% 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)) 71 72 73 74 76 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') 78 79 80 81 for item in self.cart items: 82 item.print_item_description() 83 84 85 def print_menu(newCart): 86 customer Cart = newCart 87 menu =(' MENU ' 88 'a - Add item to cart ' 89 'r - Remove item from cartn' 90 'C - Change item quantity ' 91 "i - Output items' descriptions " 92 'o - Output shopping cart ' 93 'q - Quit ') 94 command = 95 while(command != 'q'): 96 print(menu) 97 command = input('Choose an option: ') 98 while(command != 'a' and command != 'o' and command != 'i' and command != 'q' and command != 'r' and command != 'c'): 99 command = input('Choose an option: ') 100 if(command == 'a'): 101 print(" ADD ITEM TO CART") 102 item_name input('Enter the item name: ') 103 item_description = input('Enter the item description: ') 104 item_price = int(input('Enter the item price: ')) item_quantity = int(input('Enter the item quantity: ')) 106 itemtoPurchase = ItemToPurchase(item_name, item_price, item_quantity, item_description) 107 customer_Cart.add_item(itemtoPurchase) 108 elif (command == 'o'): 109 print('OUTPUT SHOPPING CART') 110 customer_Cart.print_total() 111 elif(command == 'i'): 112 print(" OUTPUT ITEMS' DESCRIPTIONS') customer_cart.print_descriptions() 114 elif(command == 'r'): 115 print("REMOVE ITEM FROM CART') 116 itemName = input('Enter name of item to remove: ') 117 customer_Cart.remove_item(itemName) 118 elif(command == 'c'): 119 print(" CHANGE ITEM QUANTITY') 120 itemName = input('Enter the item name: ') 121 customer_Cart.modify_item(itemName) 122 123 124 if name main ': 125 105 113 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 if 125 126 127 128 129 130 131 'a - Add item to cartn 'r - Remove item from cartn' '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 == '0'): 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) 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)

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!