I have been working on a python problem for the past four days and I keep getting a small problem when I run my code. The error that I am getting is the following:
Traceback (most recent call last): File "cuddy_m_chap10_7.py", line 163, in main() File "cuddy_m_chap10_7.py", line 121, in main cr1.clear(r3) File "cuddy_m_chap10_7.py", line 48, in clear self.__list_item.remove(r) ValueError: list.remove(x): x not in list
Now, I have researched this problem but cannot find anything that helps me. To start, I have a simple program that has three objects, which represent clothes. I have a cash register class and here are some of its methods:
def __init__(self):
self.__list_item = []
def purchase_item(self, r):
self.__list_item.append(r)
def clear(self, r):
for item in self.__list_item:
self.__list_item.remove(r)
As the program runs, the user may add clothes to a shopping cart or take clothes out. Now, if I add two pieces of clothing, I can use the clear method and take out a piece. However, if I have three pieces of clothing in the cart then get the trace back error. So, 2 items in cart, everything works fine, three or more pieces I get my error. Here is the code is some of the main function code:
#Creating the objects from the class
r1 = RetailItem('Jacket', 12, 59.95)
r2 = RetailItem('Designer Jeans', 40, 34.95)
r3 = RetailItem('Shirt', 20, 24.95)
#creating cash register object
cr1 = CashRegister()
print("Listing All Items:")
print('ITEM', '\t', '\t', '\t', 'PRICE')
print(r1.get_desc(), '\t', '\t', '\t', r1.get_price())
print(r2.get_desc(), '\t', '\t', r2.get_price())
print(r3.get_desc(), '\t', '\t', '\t', r3.get_price())
#Asking the user which items they want to buy
ch = 'y'
while ch.upper() == 'Y':
print()
print("Please enter the name of the item to be purchased")
item = input('Name: ')
if item.upper() == r1.get_desc().upper():
cr1.purchase_item(r1)
elif item.upper() == r2.get_desc().upper():
cr1.purchase_item(r2)
elif item.upper() == r3.get_desc().upper():
cr1.purchase_item(r3)
ch = input('Select another item: (y/n): ')
#Displaying a list of the items which have been placed in the cart
print()
print("The list of the items you have in your cart are as follows: ")
print(cr1.show_items())
print()
remove = input("Do you want to remove an item? (y/n) ")
while remove.lower() == 'y':
if remove.lower() == 'y':
print("Please enter the name of the item you want to be remove: ")
name = input('Item: ')
if name.upper() == r1.get_desc().upper():
cr1.clear(r1)
print("The", r1.get_desc(), "has been removed!")
elif name.upper() == r2.get_desc().upper():
cr1.clear(r2)
print("The", r2.get_desc(), "has been removed!")
elif name.upper() == r3.get_desc().upper():
cr1.clear(r3)
print("The", r3.get_desc(), "has been removed!")
remove = input("Do you want to remove an item? (y/n) ")
any help on why my program works with 2 items in the cart but not 3 will be greatly appreciated! Thank you