Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions library.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from typing import Optional
from library.model.book import Book
from library.model.genre import Genre


class Library():

# Prints crime audio books
def print_longest_crime_audio_book(self) -> str:
crime_audio_books: list[Book] = []
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable is never used

max: Optional[Book] = None

# print banner
print("*********************************************")
print("********* Longest Crime Audio Book **********")
print("*********************************************")

for b in self.get_books():
if Genre.CRIME in b.genres:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

combine the two if statements to one if statement

if b._book_type == "Audio":
if max is not None and max.duration < b.duration:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a bug here, it should be "max is None or max.duration < b.duration"

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, there may be multiple books of the same maximum length. Then, only the first one is actually printed out.

max = b
# end if
# end if
else:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Else branch not necessary

pass
# end else
# end for

print(f"Title: {max.title}")
print(f"Author: {max.authors}")
print(f"Duration: {max.duration}")
print(f"______________________________")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add the other variables of book to the printout

return str(max)

Copy link
Collaborator

@SchubertS96 SchubertS96 Nov 22, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The constructor and the class variable should be above the print function in our opinion for better readability

# Constructor
def __init__(self, books: list[Book]):
self._books = books

_books: list[Book] = []

def get_books(self) -> list[Book]:
return self._books