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
49 changes: 33 additions & 16 deletions library.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import json


def open_library(filename):
# Create empty dictionaries just in case the library file is empty
students = {}
Expand All @@ -10,8 +8,7 @@ def open_library(filename):
# We use the with keyword so we don't have to explicitly close the file
# later.
#
# Alternatively you could use:
#
# Alternatively you could use: #
# f = open(filename)
# data = json.load(f)
# f.close()
Expand All @@ -21,18 +18,15 @@ def open_library(filename):
with open(filename) as f:
data = json.load(f)

# If there are students or books in the library,
# overwrite the empty dictionaries we created
# If there are students or books in the library, # overwrite the empty dictionaries we created
if data['students'] != {}:
students = data['students']

if data['books'] != {}:
books = data['books']

# Return the data we loaded from the file
return students, books


def add_book(filename, isbn, title, author):
# Here's a start
students, books = open_library(filename)
Expand All @@ -43,46 +37,69 @@ def add_book(filename, isbn, title, author):
# to the books object.

books[isbn] = {'title': title, 'author':author}

# Finally, write code that writes the new data to the library
# Do we need to return anything?
with open(filename) as f:
json.dump({'students':students,'books':books}, f)



def remove_book(filename, isbn):
students, books = open_library(filename)

# How can we *remove* an item from a dictionary?
# Write code to delete the book keyed by isbn in the space below

if 'isbn' in books:
del books['isbn']
# Now write code that saves the new version of the data to your library

with open(filename) as f:
json.dump ({'students' : students, 'books' : books} ,f)

def check_out(filename, isbn, s_id):
students, books = open_library(filename)

# Find a way to mark a book as checked out. Be sure to associate
# the book with the student who borrowed it!


checked_out = {}
Copy link
Member

Choose a reason for hiding this comment

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

What happens if you run this function twice? It seems to me every time the function is run, the checked_out dictionary is reset.

if 'isbn' in books:
checked_out.updated(books[isbn])

# And again save the data here

with open(filename) as f:
json.dump({'students' : students, 'books' : books} ,f)

pass


def return_book(filename, isbn):
students, books = open_library(filename)

if 'isbn' in checked_out:
books.updated(checked_out)

# Now ensure that the book is no longer checked out and save the changes
# to the library.


with open(filename) as f:
json.dump({'students' : students, 'books' : books} ,f)

pass


def status(filename):
students, books = open_library(filename)

if books[isbn] == True:
return book[isbn]
else:
return checked_out[isbn]
Copy link
Member

Choose a reason for hiding this comment

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

checked_out isn't defined within the scope of this function. Are you sure you tested your code?


# Print out two lists - one of all books currently checked out,
# and one of all available books.


with open(filename) as f:
json.dump({'students' : students, 'books' : books} ,f)
pass