-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathU3-Ejercicio-1.py
More file actions
127 lines (104 loc) · 3.76 KB
/
U3-Ejercicio-1.py
File metadata and controls
127 lines (104 loc) · 3.76 KB
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
"""
Crea las clases:
- Libro (atributos: título, autor, ISBN, disponible)
- Usuario (atributos: nombre, ID, libros_prestados)
- Biblioteca (atributos: lista_libros, lista_usuarios)
Implementa métodos para:
- Prestar libro
- Devolver libro
- Buscar libro por título
- Mostrar libros disponibles
"""
class Libro:
def __init__(self, titulo, autor, isbn):
self.titulo = titulo
self.autor = autor
self.isbn = isbn
self.disponible = True
def __str__(self):
estado = "Disponible" if self.disponible else "Prestado"
return f"'{self.titulo}' por {self.autor} - {estado}"
class Usuario:
def __init__(self, nombre, id_usuario):
self.nombre = nombre
self.id = id_usuario
self.libros_prestados = []
def __str__(self):
return f"Usuario: {self.nombre} (ID: {self.id})"
class Biblioteca:
def __init__(self):
self.libros = []
self.usuarios = []
def agregar_libro(self, libro):
self.libros.append(libro)
print(f"📚 Libro '{libro.titulo}' agregado a la biblioteca")
def registrar_usuario(self, usuario):
self.usuarios.append(usuario)
print(f"👤 Usuario {usuario.nombre} registrado")
def buscar_libro(self, titulo):
encontrados = []
for libro in self.libros:
if titulo.lower() in libro.titulo.lower():
encontrados.append(libro)
return encontrados
def prestar_libro(self, isbn, id_usuario):
# Buscar libro
libro = None
for l in self.libros:
if l.isbn == isbn and l.disponible:
libro = l
break
# Buscar usuario
usuario = None
for u in self.usuarios:
if u.id == id_usuario:
usuario = u
break
if libro and usuario:
libro.disponible = False
usuario.libros_prestados.append(libro)
print(f"📖 Libro '{libro.titulo}' prestado a {usuario.nombre}")
else:
print("❌ No se pudo realizar el préstamo")
def devolver_libro(self, isbn, id_usuario):
for usuario in self.usuarios:
if usuario.id == id_usuario:
for libro in usuario.libros_prestados[:]:
if libro.isbn == isbn:
libro.disponible = True
usuario.libros_prestados.remove(libro)
print(f"📗 Libro '{libro.titulo}' devuelto")
return
print("❌ No se encontró el préstamo")
def mostrar_libros_disponibles(self):
disponibles = [libro for libro in self.libros if libro.disponible]
if disponibles:
print("\n📚 LIBROS DISPONIBLES:")
for libro in disponibles:
print(f" - {libro}")
else:
print("📚 No hay libros disponibles")
# Ejemplo de uso
def demo_biblioteca():
# Crear biblioteca
biblio = Biblioteca()
# Agregar libros
libro1 = Libro("Cien años de soledad", "Gabriel García Márquez", "001")
libro2 = Libro("1984", "George Orwell", "002")
libro3 = Libro("El Quijote", "Miguel de Cervantes", "003")
biblio.agregar_libro(libro1)
biblio.agregar_libro(libro2)
biblio.agregar_libro(libro3)
# Registrar usuarios
usuario1 = Usuario("Ana García", "U001")
usuario2 = Usuario("Carlos López", "U002")
biblio.registrar_usuario(usuario1)
biblio.registrar_usuario(usuario2)
# Operaciones
biblio.mostrar_libros_disponibles()
biblio.prestar_libro("001", "U001")
biblio.mostrar_libros_disponibles()
biblio.devolver_libro("001", "U001")
biblio.mostrar_libros_disponibles()
# Ejecutar
demo_biblioteca()