私は過去4日間Pythonの問題に取り組んでおり、コードを実行すると小さな問題が続きます。ValueError:list.remove(x):x Pythonでリストに問題がありません
トレースバック(最新の呼び出しの最後)::私は取得していますエラーは次のようであるで メイン() ファイル「cuddy_m_chap10_7.py」で ファイル「cuddy_m_chap10_7.py」、ライン163、ライン121、メイン cr1.clear(R3) ファイル "cuddy_m_chap10_7.py"、48行、明確な 自己.__ list_item.remove(R) とValueError中:list.remove(X):今すぐリスト
ではないxは私はこの問題を研究しましたが、私を助けるものは何も見つかりませんでした。まず、服を表す3つのオブジェクトを持つシンプルなプログラムがあります。私はレジのクラスを持っており、ここではその方法の一部です:プログラムを実行すると、ユーザーがショッピングカートに服を追加したり、服を取ること
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)
。さて、2服の衣服を追加すると、私はクリアメソッドを使用して作品を取り出すことができます。しかし、カートに3つの服があると、トレースバックエラーが発生します。だから、カートの2つの項目は、すべて正常に動作し、3つ以上の作品私のエラーを取得します。私のプログラムは、カート内の2つの項目で動作する理由上の任意のヘルプは
#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) ")
ではなく、3は非常に高く評価されます。ここでは、コードメイン関数のコードの一部をされています!ありがとうございました
は、リストから削除しないでください。..リストから何度でも
r
を削除しようとしている:ちょうど1つの項目を削除します。反復はインデックスを使用し、リストから削除するとそれらのインデックスはもはや正確ではありません*。 –