Skip to content

Commit 1d4ec3e

Browse files
committed
#26 - Python
1 parent 0407190 commit 1d4ec3e

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
'''
2+
EJERCICIO
3+
'''
4+
5+
# Incorrecto
6+
7+
class User:
8+
9+
def __init__(self, name, email) -> None:
10+
self.name = name
11+
self.email = email
12+
13+
def save_to_database(self):
14+
pass
15+
16+
def send_email(self):
17+
pass
18+
19+
20+
# Correcto
21+
22+
class User:
23+
24+
def __init__(self, name, email) -> None:
25+
self.name = name
26+
self.email = email
27+
28+
class UserService:
29+
30+
def save_to_database(self, user):
31+
pass
32+
33+
class EmailService:
34+
35+
def send_email(self, email, message):
36+
pass
37+
38+
'''
39+
EXTRA
40+
'''
41+
42+
# Incorrecto
43+
44+
class Library:
45+
def __init__(self) -> None:
46+
self.books = []
47+
self.users = []
48+
self.loans = []
49+
50+
def add_book(self, title, author, copies):
51+
self.books.append({"title": title, "author": author, "copies": copies})
52+
53+
def add_user(self, name, id, email):
54+
self.users.append({"id": id, "name": name, "email": email})
55+
56+
def loan_book(self, user_id, book_title):
57+
for book in self.books:
58+
if book["title"] == book_title and book["copies"] > 0:
59+
book["copies"] -= 1
60+
self.loans.append(
61+
{"user_id": user_id, "book_title": book_title})
62+
return True
63+
return False
64+
65+
def return_book(self, user_id, book_title):
66+
for loan in self.loans:
67+
if loan["user_id"] == user_id and loan["book_title"] == book_title:
68+
self.loans.remove(loan)
69+
for book in self.books:
70+
if book["title"] == book_title:
71+
book["copies"] += 1
72+
return True
73+
return False
74+
75+
# Correcto
76+
77+
class Book:
78+
79+
def __init__(self, title, author, copies):
80+
self.title = title
81+
self.author = author
82+
self.copies = copies
83+
84+
class User:
85+
86+
def __init__(self, name, id, email):
87+
self.name = name
88+
self.id = id
89+
self.email = email
90+
91+
class Loan:
92+
93+
def __init__(self):
94+
self.loans = []
95+
96+
def loan_bool(self, user, book):
97+
if book.copies > 0:
98+
book.copies -= 1
99+
self.loans.append(
100+
{"user_id": user.id, "book_title": book.title})
101+
return True
102+
return False
103+
104+
def return_book(self, user, book):
105+
for loan in self.loans:
106+
if loan["user_id"] == user.id and loan["book_title"] == book.title:
107+
self.loans.remove(loan)
108+
book.copies += 1
109+
return True
110+
return False
111+
112+
class Library:
113+
114+
def __init__(self) -> None:
115+
self.books = []
116+
self.users = []
117+
self.loans_service = Loan()
118+
119+
def add_book(self, book):
120+
self.books.append(book)
121+
122+
def add_user(self, user):
123+
self.users.append(user)
124+
125+
def loan_book(self, user_id, book_title):
126+
user = next((u for u in self.users if u.id == user_id), None)
127+
book = next((b for b in self.books if b.title == book_title), None)
128+
if user and book:
129+
return self.loans_service.loan_book(user, book)
130+
return False
131+
132+
def return_book(self, user_id, book_title):
133+
user = next((u for u in self.users if u.id == user_id), None)
134+
book = next((b for b in self.books if b.title == book_title), None)
135+
if user and book:
136+
return self.loans_service.return_book(user, book)
137+
return False

0 commit comments

Comments
 (0)