Reputation: 1
my code in python have this error, i'm listen python and don't know why happens, in the console the python interpreter print this:
Introdusca el titulo del libro> crisal
introdusca el autor del libro> roijari
introdusca la editorial del libro> tor
introdusca el precio del libro> 456
Traceback (most recent call last):
File "/home/crisal/programas-en-python/tadcomp_clase3.py", line 32, in <module>
cargar_en_libreria(lr,l)
File "/home/crisal/programas-en-python/tad_comp_libre.py", line 10, in cargar_en_libreria
libreria.append(libro)
AttributeError: 'NoneType' object has no attribute 'append'
the problem happens when import the funtion that load the data in abstact data type(ADT) in the list that is allocated in the ADT with the name 'tad_comp_libre' and the code in python is this(main):
## EJERCICIO PRACTICO ##
#cargar cuatro libros
#imprimir los datos de todo los libros
#eliminar el 2º libro
#imprimir libros restantes
# estructura intrer de los libros
## nombre
## editorial
## autor
## precio
from tad_libro import*
from tad_comp_libre import*
#creo un for carador de los libro
l=crear_libro() #crea los libros
lr=crear_libreria() #crea la libreria
#introdusco los datos que van a tener los libros y los pone en la libreria
for i in range(0,3):
nom=input("Introdusca el titulo del libro> ")
aut=input("introdusca el autor del libro> ")
edi=input("introdusca la editorial del libro> ")
prec=float(input("introdusca el precio del libro> "))
cargar_libro(l,nom,aut,edi,prec)
cargar_en_libreria(lr,l)
#imprime los datos de los libros
for i in range(0,tamanio(lr)):
b_l=buscar_libro(lr,i)
print("--------------------------\n")
print("titulo: ",Vernombre(l))
print("autor: ",Verautor(l))
print("Ediorial: ",Vereditorial(l))
print("Precio: ",Verprecio(l))
print("--------------------------\n")
opc=1
##elimino el segundo libro:
opc=int(input("desea eliminar un libro?: Si(1)/No(0)>>"))
while opc==1:
nom=input("elija el libro que desea eliminar(nombre)")
b_l=buscar_libro2(lr,nom)
borrar_libro(lr,b_l)
opc=int(input("desea eliminar otro libro?: Si(1)/No(0)>>"))
else:
print("se a terminado el proceso de eliinacion de libros")
#imprime de nuevo la lista
for i in lr:
print("--------------------------\n")
print("titulo: ",Vernombre(i))
print("autor: ",Verautor(i))
print("Ediorial: ",Vereditoria(i))
print("Precio: ",Verprecio(i))
print("--------------------------\n")
(tad_libro)
def crear_libro():
libro=["","","",0]
return libro
def cargar_libro(libro,n,a,e,p):
libro[0]=n
libro[1]=a
libro[2]=e
libro[3]=p
def Vernombre(libro):
return libro[0]
def Verautor(libro):
return libro[1]
def Vereditorial(libro):
return libro[2]
def Verprecio(libro):
return libro[3]
def modifNom(libro,nom1):
libro[0]=nom1
def modifaut(libro,aut1):
libro[1]=aut1
def modifpre(libro,pre1):
libro[2]=pre1
(tad_comp_libre) in this ADT happens the problem when load the data
from tad_libro import*
#crea el tipo de dato libreria
def crear_libreria():
libreria=[]
#carga los datos de los libros en la libreia
def cargar_en_libreria(libreria,libro):
libreria.append(libro)
#libro elimina un libro puntual de la libreria
def borrar_libro(libreria,l):
libreria.remove(l)
#devuelve el tamanio de la libreria
def tamanio(libreria):
return len(libreria)
#busca un libro dentro de la libreria
def buscar_libro(libreria,i):
return libreria[i]
def bucar_libro2(libreria,nombre):
for i in libreia:# el parametro libreria transforma el indice de tipo tad_libro porque es el tipo de dato que hay alojado en libreria
if Vernombre(i)==nombre:
return i
if you can help my, i'm will really thanks they, sorry for the code in spanish
Upvotes: 0
Views: 1032
Reputation: 54698
crear_libreria
needs to return its result. Right now, it stored in a variable that is immediately destroyed. As a result, the lr
global is set to None.
Do this:
#crea el tipo de dato libreria
def crear_libreria():
return []
Upvotes: 3