21.2k views
1 vote
Somebody help me to fix this code

class Item:
def __init__(self, nome, quantidade, marca):
self.nome = nome
self.quantidade = quantidade
self.marca = ade
self.marca = marca
self.proximo = None

class ListaDeCompras:
def __init__(self):
self.primeiro = None
self.ultimo = None

def adicionar_item(self, nome, quantidade, marca):
novo_item = Item(nome, quantidade, marca)
if self.primeiro is None:
self.primeiro = if self.primeiro is None:
self.primeiro = novo_item
self.ultimo = novo_item
else:
self.ultimo.proximo = novo_item
self.ultimo = novo_item

def remover_item(self, nome):
item_atual = self.primeiro
item_anterior = None
while item_atual is not None:
if item_atual.nome == nome:
if item_anterior is not None:
item_anterior.proximo = item_atual.proximo
else:
self.primeiro = item_atual.proximo
if item_atual.proximo is None:
self.ultimo = item_anterior
return True
item_anterior = item_atual
item_atual = item_atual.proximo
return False

def imprimir_lista(self):
item_atual = self.primeiro
while item_atual is not None:
print(f"{item_atual.nome} - {item_atual.quantidade} - {item_atual.marca}")
item_atual = item_atual.proximo​

User Shreck Ye
by
7.8k points

1 Answer

4 votes

What has changed?

You have defined two classes in Python. These classes also have constructor methods. In the first of these constructor methods, you have defined the variable "marca" twice. I fixed a typo in the "adicionar_item" method in the second class. I fixed the if-else block structure in the "remover_item" method.

class Item:

def __init__(self, nome, quantidade, marca):

self.nome = nome

self.quantidade = quantidade

self.marca = marca

self.proximo = None

class ListaDeCompras:

def __init__(self):

self.primeiro = None

self.ultimo = None

def adicionar_item(self, nome, quantidade, marca):

novo_item = Item(nome, quantidade, marca)

if self.primeiro is None:

self.primeiro = novo_item

self.ultimo = novo_item

else:

self.ultimo.proximo = novo_item

self.ultimo = novo_item

def remover_item(self, nome):

item_atual = self.primeiro

item_anterior = None

while item_atual is not None:

if item_atual.nome == nome:

if item_anterior is not None:

item_anterior.proximo = item_atual.proximo

else:

self.primeiro = item_atual.proximo

if item_atual.proximo is None:

self.ultimo = item_anterior

return True

item_anterior = item_atual

item_atual = item_atual.proximo

return False

def imprimir_lista(self):

item_atual = self.primeiro

while item_atual is not None:

print(f"{item_atual.nome} - {item_atual.quantidade} - {item_atual.marca}")

item_atual = item_atual.proximo

User Neutrino
by
8.8k points