0
I’m having a problem with a stack code, is returning the following message:
line 9 in empilhar_pilha: novo_numero.proximo = pilha.topo
AttributeError: 'float' object has no attribute 'proximo'
line 18, in desempilhar_pilha: pilha.topo = pilha.topo.proximo
AttributeError: 'NoneType' object has no attribute 'proximo'
Not to mention that the option 4 List stack does not appear anything.
class Pilha:
topo = None
class Elemento:
numero: float
proximo = None
def empilhar_pilha(pilha, novo_numero):
novo_numero.proximo = pilha.topo
pilha.topo = novo_numero
print(f"Elemento {novo_numero.numero} foi inserido no topo da pilha")
def desempilhar_pilha(pilha):
if tamanho_pilha(pilha) == 0:
print("A pilha está vazia")
else:
elemento_excluido = pilha.topo
pilha.topo = pilha.topo.proximo
exclusao_feita = elemento_excluido.numero
del elemento_excluido
print(f"Elemento ({exclusao_feita}) foi excluido do topo da pilha")
def tamanho_pilha(pilha):
if (pilha_vazia(pilha) == True):
return 0
else:
contador_pilha = 0
numero_pilha = pilha.topo
while numero_pilha != None:
contador_pilha += 1
numero_pilha = numero_pilha.proximo
return contador_pilha
def pilha_vazia(pilha):
situacao_pilha = (pilha.topo == None)
return situacao_pilha
def listar_pilha(pilha):
if pilha_vazia(pilha) == 0:
print("A pilha esta vazia\n")
else:
ver_numero = pilha.topo
while ver_numero != None:
print(ver_numero.numero, end= "--> Topo\n" if ver_numero == pilha.topo else print())
ver_numero = ver_numero.proximo
pilha_pilhosa = Pilha()
opcao = 1
while opcao != 5:
print ("1 - Empilhar")
print ("2 - Desempilhar")
print ("3 - Informar tamanho da pilha")
print ("4 - Listar pilha")
print ("5 - Sair")
opcao = int(input("Informe a opcao: "))
if opcao == 1:
numero_informado = float(input("Digite um número: "))
empilhar_pilha(pilha_pilhosa, numero_informado)
elif opcao == 2:
desempilhar_pilha(pilha_pilhosa)
elif opcao == 3:
print(f"Tamanho da pilha é de {tamanho_pilha(pilha_pilhosa)} elementos\n")
elif opcao == 4:
listar_pilha(pilha_pilhosa)
elif opcao == 5:
print("Saindo...\n")
else:
print("Opcao invalida, digite uma opcao valida no menu\n")
This type of code is for queue?
– user141036
class Elemento:
 def __init__(self, n, p ):
 self.numero = n
 self.proximo = p
explain this part to me– user141036
It worked perfectly, thanks @Lacobus.
– user141036
@Alexf.: Is a constructor: https://pt.wikipedia.org/wiki/Construtor#Python
– Lacobus
Okay then, thanks again.
– user141036