-
Notifications
You must be signed in to change notification settings - Fork 0
/
Proyecto3.py
141 lines (113 loc) · 4.1 KB
/
Proyecto3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# Tercer Proyecto del libro APRENDE PYTHON EN UN FIN DE SEMANA
'''PROYECTO 3 - BIBLIOTECA'''
# Empezamos
''' Definimos tres clases, Autor, Libro, Biblioteca'''
# Clase Autor, con atributos nombre y apellidos
class Autor:
def __init__(self, Nombre, Apellidos):
self.Nombre = Nombre
self.Apellidos = Apellidos
''' Creamos el metodo MostrarAutor, que mostrará los atributos Nombre y Apellidos'''
def MostrarAutor(self):
print(f"El autor es {self.Nombre} {self.Apellidos}")
# Clase Libro, con atributos Titulo, ISBN
class Libro:
def __init__(self, Titulo, ISBN):
self.Titulo = Titulo
self.ISBN = ISBN
self.Autor = None
''' Creamos tres metodos, AñadirAutor, MostrarLibro, ObtenerTitulo'''
def AñadirAutor(self, autor):
self.Autor = autor
def MostrarLibro(self):
print("---Libro---")
print("Titulo: ",self.Titulo)
print("ISBN: ",self.ISBN)
if self.Autor:
self.Autor.MostrarAutor()
else:
print("Autor no asignado")
print("-----------")
def ObtenerTitulo(self):
return self.Titulo;
# Clase Biblioteca, con atributos ListaLibros
class Biblioteca:
def __init__(self):
self.ListaLibros = []
''' Creamos los metodos:
NumeroLibros que devuelve el numero de libros de la libreria
AñadirLibro que almacena el libro pasado por parametro en la lista de libros que tiene como atributo
BorrarLibro que elimina un libro de la biblioteca a oartir de su titulo
MostrarBiblioteca muestra todos los libros de la biblioteca'''
def NumeroLibros(self):
return len(self.ListaLibros)
def AñadirLibro(self, libro):
self.ListaLibros = self.ListaLibros + [libro]
def BorrarLibro(self, titulo):
encontrado = False
posicionaborrar = -1
for item in self.ListaLibros:
posicionaborrar += 1
if item.ObtenerTitulo() == titulo:
encontrado = True
break
if encontrado:
del self.ListaLibros[posicionaborrar]
print("Libro borrado!")
else:
print("Libro no encontrado.")
def MostrarBiblioteca(self):
print("###############################")
for item in self.ListaLibros:
item.MostrarLibro()
print("###############################")
# Ahora añadiremos un menu de funciones.
def MostrarMenu():
print("**************")
print("* BIBLIOTECA *")
print("**************")
print("""Menu:\n
1. Añadir Libro a la Biblioteca
2. Mostrar Biblioteca
3. Borrar Libro
4. Numero de Libros
5. Salir""")
# Añadimos la funcion de añadir un libro:
def AñadirLibroABiblioteca(biblioteca):
titulo = input("Introduzca el titulo del libro: ")
isbn = input("Introduzca el ISBN: ")
autornombre = input("Introduzca el nombre del autor: ")
autorapellidos = input("Introduzca los apellidos del autor: ")
autor = Autor(autornombre, autorapellidos)
libro = Libro(titulo, isbn)
libro.AñadirAutor(autor)
biblioteca.AñadirLibro(libro)
return biblioteca
def MostrarBiblioteca(biblioteca):
biblioteca.MostrarBiblioteca()
def BorrarLibro(biblioteca):
titulo = input("Introduzca el titulo del libro a borrar: ")
biblioteca.BorrarLibro(titulo)
def NumeroLibros(biblioteca):
print("En la biblioteca hay ",biblioteca.NumeroLibros(), " libros")
# Añadimos el bucle para que el programa funcione constantemente hasta que salgamos.
fin = False
biblioteca = Biblioteca()
while not(fin):
try:
MostrarMenu()
opcion = int(input("Elige una opcion: "))
match opcion:
case 1:
biblioteca = AñadirLibroABiblioteca(biblioteca)
case 2:
MostrarBiblioteca(biblioteca)
case 3:
BorrarLibro(biblioteca)
case 4:
NumeroLibros(biblioteca)
case 5:
print("Gracias por usar la Biblioteca")
fin = True
except ValueError:
print("Elige una opcion del 1 al 5 por favor.")