top_two = Tome_Rater.get_n_most_prolific_readers(2) for user in top_two: print('{user} has read {book_count} books'.format( user=user, book_count=top_two[user])) print() print( "List of 2 most expensive books: (truncated if requested list is larger than catalog" ) pricey_two = Tome_Rater.get_n_most_expensive_books(2) for k, v in pricey_two.items(): print('{title} costs ${price}'.format(title=k, price=v)) print() print('"Worth" of users') print('Total spend for {email} is {total_spend}'.format( email='*****@*****.**', total_spend=Tome_Rater.get_worth_of_user('*****@*****.**'))) print('Total spend for {email} is {total_spend}'.format( email='*****@*****.**', total_spend=Tome_Rater.get_worth_of_user('*****@*****.**'))) print('Total spend for {email} is {total_spend}'.format( email='*****@*****.**', total_spend=Tome_Rater.get_worth_of_user('*****@*****.**'))) print() print('End of first Tome_Rater tests') print() ################################################### Tome_Rater2 = TomeRater() #Create some books:
Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 3) #Uncomment these to test your functions: Tome_Rater.print_catalog() print('') Tome_Rater.print_users() print('') print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print('') print("Most read book:") print(Tome_Rater.get_most_read_book()) print('') print("Get 'n' most read books:") Tome_Rater.get_n_most_read_books(4) print('') print("Get 'n' most prolific readers:") Tome_Rater.get_n_most_prolific_readers(3) print('') print("Get 'n' most expensive books.") Tome_Rater.get_n_most_expensive_books(4) print('') print("The sum of the cost of all books read by given user:"******"*****@*****.**"))
# Adding books with prices. extra_nonfiction2 = Tome_Rater.create_non_fiction("Clean Code", "Software Engineering", "advanced", 6789, 43.27) extra_novel2 = Tome_Rater.create_novel("Ender's Game", "Orson Scott Card", 11121314, 11.05) extra_book2 = Tome_Rater.create_book("Introduction to High-Frequency Finance", 15161718, 132.00) # Adding books with prices to users. Tome_Rater.add_book_to_user(extra_nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(extra_novel2, "*****@*****.**", 3) Tome_Rater.add_book_to_user(extra_nonfiction2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(extra_book2, "*****@*****.**", 3) Tome_Rater.add_book_to_user(extra_novel2, "*****@*****.**", 3) Tome_Rater.add_book_to_user(extra_book2, "*****@*****.**", 3) # Getting the most expensive books. Tome_Rater.print_catalog() print("The two most expensive books:") print(Tome_Rater.get_n_most_expensive_books(2)) # Getting the worth of different users. print("Alan Turing's book worth: " + str(Tome_Rater.get_worth_of_user("*****@*****.**"))) print("Marvin Minsky's book worth: " + str(Tome_Rater.get_worth_of_user("*****@*****.**"))) print("David Marr's book worth: " + str(Tome_Rater.get_worth_of_user("*****@*****.**")))
print("Should not equal:") if Tome_Rater == Tome_Rater3: print("TomeRaters are equal") else: print("TomeRaters are not equal") print("Test n most read books:") print(Tome_Rater.get_n_most_read_books(3)) print(Tome_Rater.get_n_most_read_books(1000)) print(Tome_Rater.get_n_most_read_books(1.4)) print(Tome_Rater.get_n_most_read_books(-2)) print("Test n most prolific readers:") print(Tome_Rater.get_n_most_prolific_readers(3)) print(Tome_Rater.get_n_most_prolific_readers(1000)) print(Tome_Rater.get_n_most_prolific_readers(1.4)) print(Tome_Rater.get_n_most_prolific_readers(-2)) print("Test n most expensive books:") print(Tome_Rater.get_n_most_expensive_books(3)) print(Tome_Rater.get_n_most_expensive_books(1000)) print(Tome_Rater.get_n_most_expensive_books(1.4)) print(Tome_Rater.get_n_most_expensive_books(-2)) print("Test worth of a user:"******"*****@*****.**")) print(Tome_Rater.get_worth_of_user("*****@*****.**")) print("Test best value book:") print(Tome_Rater.get_book_with_best_rating_for_price())
#Add books to a user one by one, with ratings: Tome_Rater.add_book_to_user(book1, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel4, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) #Uncomment these to test your functions: Tome_Rater.print_catalog() Tome_Rater.print_users() print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print("Most read book:") print(Tome_Rater.get_most_read_book()) print("N most read books:") print(Tome_Rater.get_n_most_read_books(3)) print("Top readers:") print(Tome_Rater.get_n_most_prolific_readers(2)) print("Most expensive books:") print(Tome_Rater.get_n_most_expensive_books(4)) print("[email protected] has " + str(Tome_Rater.get_worth_of_user("*****@*****.**")) + " worth of books")
Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) #Uncomment these to test your functions: Tome_Rater.print_catalog() Tome_Rater.print_users() print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print("Most read book:") print(Tome_Rater.get_most_read_book()) #My testing: Tome_Rater.add_a_review(book1, "Great read!") print(Tome_Rater.get_review(book1)) print("\n") Tome_Rater.get_n_most_read_books(6) print("\n") Tome_Rater.get_n_most_prolific_readers(2) print("\n") print(Tome_Rater.get_n_most_expensive_books(4)) print("\n") print(Tome_Rater.get_worth_of_user("*****@*****.**"))
#print(Tome_Rater.most_positive_user()) #print("Highest rated book:") #print(Tome_Rater.highest_rated_book()) #print("Most read book:") #print(Tome_Rater.most_read_book()) #print(Tome_Rater.get_n_most_read_books(2)) #print(Tome_Rater.get_n_most_prolific_readers(3)) Tome_Rater.add_user("Morne", "*****@*****.**") Tome_Rater.add_user("Nici", "*****@*****.**") mybook1 = Tome_Rater.create_book("Book1", 10000000, 30) mybook2 = Tome_Rater.create_book("Book2", 20000000, 20) mybook3 = Tome_Rater.create_book("Book3", 30000000, 50) mybook4 = Tome_Rater.create_book("Book4", 40000000, 10) mybook5 = Tome_Rater.create_book("Book5", 50000000, 40) mynovel1 = Tome_Rater.create_novel("Novel1", "Dude", 60000000, 80) Tome_Rater.add_book_to_user(mybook1, "*****@*****.**", 1) Tome_Rater.add_book_to_user(mybook2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(mybook3, "*****@*****.**", 3) Tome_Rater.add_book_to_user(mybook4, "*****@*****.**", 4) Tome_Rater.add_book_to_user(mybook5, "*****@*****.**", 3) Tome_Rater.add_book_to_user(mynovel1, "*****@*****.**", 3) #print(Tome_Rater.get_n_most_expensive_books(2)) print(Tome_Rater.get_worth_of_user("*****@*****.**")) print(Tome_Rater.get_worth_of_user("*****@*****.**"))
Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) #Tome_Rater.add_book_to_user(book_same_isbn, "*****@*****.**", 1) #Uncomment these to test your functions: Tome_Rater.print_catalog() Tome_Rater.print_users() print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print("Most read book:") print(Tome_Rater.get_most_read_book()) print("") print("Tome Rater object:") print(Tome_Rater) print("Test equal: {}".format(Tome_Rater == TomeRater())) print("get_n_most_prolific_readers:") print(Tome_Rater.get_n_most_prolific_readers(4)) print("get_n_most_expensive_books:") print(Tome_Rater.get_n_most_expensive_books(5)) email = "*****@*****.**" print("get_worth_of_user {}:".format(email)) print(Tome_Rater.get_worth_of_user(email))
"withoutmiukumaukucomputation.org") # Without @ Tome_Rater.add_user("E: User email without ending", "without@ending") # Without domain Tome_Rater.add_user("E: User email without ending and @", "justtextasemail") # Just a string # Add a user with three books already read: Tome_Rater.add_user( "Marvin Minsky", "*****@*****.**", user_books=[book1, book3, novel1, novel2, nonfiction1, nonfiction3]) print("\nTest case: Book price calculations") # Add books to a user one by one, with ratings: Tome_Rater.add_book_to_user(book1, "*****@*****.**", 1) # +0 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 0") Tome_Rater.add_book_to_user(book2, "*****@*****.**", 4) # +2.54 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 2.54") Tome_Rater.add_book_to_user(book3, "*****@*****.**", 3) # +64.42 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 66.96") Tome_Rater.add_book_to_user(novel1, "*****@*****.**", 3) # +0 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 66.96") Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) # +0 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 66.96") Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) # +0 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 66.96") Tome_Rater.add_book_to_user(novel4, "*****@*****.**", 2) # +12.45 print(Tome_Rater.get_worth_of_user("*****@*****.**"), "should be 79.41") Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4)
print(tomerater3.most_positive_user()) print("Testing get_n_most_read_books tomerater3: That Book & Python for Dummies") tomerater3.add_book_to_user(tomeraterbook1, "*****@*****.**", 4) tomerater3.add_book_to_user(tomeraterbook1, "*****@*****.**", 2) print(tomerater3.get_n_most_read_books(2)) print("Testing get_n_most_prolific_readers tomerater3: Beatriz Rodriguez & Jenny Parque") tomerater3.add_user("Jenny Parque", "*****@*****.**") tomerater3.add_book_to_user(tomeraterbook1, "*****@*****.**", 3.8) tomerater3.add_book_to_user(tomeraterbook1, "*****@*****.**", 2) tomerater3.add_book_to_user(non_fiction1, "*****@*****.**", 1.5) tomerater3.add_book_to_user(tomeraternovel1, "*****@*****.**", 2.3) print(tomerater3.get_n_most_prolific_readers(2)) print("Testing get_n_most_expensive_books tomerater3: Untruth & Look Over There") print(tomerater3.get_n_most_expensive_books(2)) print("Testing get_worth_of_user for Xiomei Li tomerater3: 67") print(tomerater3.get_worth_of_user("*****@*****.**")) print("Testing string representation tomerater2: This TomeRater has 3 book(s) and 2 user(s). \nWith Watch My Hand being read the most, Untruth having the highest average rating,\nand Beatriz Rodriguez giving the most positive reviews.") print(tomerater2) print("Testing tomerater1 equal to tomerater2: False") print(tomerater1 == tomerater2) print("Testing tomerater1 equal to tomerater4: True") tomerater4.add_user("Beatriz Rodriguez", "*****@*****.**", [book1, book5]) tomerater4.add_book_to_user(tomeraterbook1, "*****@*****.**") print(tomerater1 == tomerater4) print("Testing existing user error handling for user3 tomerater3: User Jenny Parque currently exists with email [email protected]. Please use a different email.") tomerater3.add_user("Jenny Parqua", "*****@*****.**") print("Testing existing isbn error handling for all book types tomerater3") print("Creating TomeRaterBook: The isbn 123908 already exists for another book. Please give a unique isbn.") tomeraterbook2 = tomerater1.create_book("That is a Book", 123908, 3) print("Creating TomeRaterNovel: The isbn 122345 already exists for another book. Please give a unique isbn.") tomerater1.add_book_to_user(tomeraternovel1, "*****@*****.**")
#Add a user with three books already read: Tome_Rater.add_user("Marvin Minsky", "*****@*****.**", [book1, novel1, nonfiction1]) #Add books to a user one by one, with ratings: Tome_Rater.add_book_to_user(book1, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) #Uncomment these to test your functions: Tome_Rater.print_catalog() Tome_Rater.print_users() print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print("Most read book:") print(Tome_Rater.get_most_read_book()) print("Enter the amount of most expensive books to look for") print(Tome_Rater.get_n_most_expensive_books(int(input()))) print("Enter the user's email to search his/her worth") print(Tome_Rater.get_worth_of_user(input()))
Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) # for testing the methods. I chose to use print() as part of these methods' output rather than return. Tome_Rater.print_catalog() print() Tome_Rater.print_users() print() print("Most positive user:"******"Highest rated book:") print() Tome_Rater.highest_rated_book() print() print("Most read book:") print() Tome_Rater.most_read_book() print() #for testing more additional methods Tome_Rater.get_n_most_read_books(5) print() Tome_Rater.get_n_most_prolific_readers(10) print() Tome_Rater.get_n_most_expensive_books(4) print() print(str(Tome_Rater.get_worth_of_user("*****@*****.**")) + " " + "USD$")
# User already exists test: Tome_Rater.add_user("James Bond", "*****@*****.**") Tome_Rater.add_user("James Bond", "*****@*****.**") # Book repr test: print(book1) # Ensure books have unique ISBNs Tome_Rater.create_book( "Test", 12345678, 70 ) # Prints warning and does not create it (uses ISBN which is already adder earlier) Tome_Rater.create_novel( "Alice In Wonderland", "Lewis Carroll", 9781536831139, 30 ) # Prints warning and does not create it (uses ISBN which is already adder earlier) Tome_Rater.create_non_fiction( "Computing Machinery and Intelligence 2", "AI", "advanced", 1929452, 25 ) # Prints warning and does not create it (uses ISBN which is already adder earlier) # Invalid email test Tome_Rater.add_user("James Bond", "jamesbond.org") Tome_Rater.add_user("James Bond", "*****@*****.**") print(Tome_Rater.get_n_most_read_books(5)) print(Tome_Rater.get_n_most_read_books(2)) print(Tome_Rater.get_n_most_prolific_readers(5)) print(Tome_Rater.get_n_most_prolific_readers(2)) print(Tome_Rater.get_n_most_expensive_books(20)) print(Tome_Rater.get_n_most_expensive_books(2)) print(Tome_Rater.get_worth_of_user("*****@*****.**")) print(Tome_Rater.get_worth_of_user("*****@*****.**"))
print("\r\n***** Testing most positive user") print("Most positive user: "******"\r\n***** Testing TomeRater __repr__ method") print(tomerater) print("\r\n***** Testing TomeRater get_n_most_read_books method") print(tomerater.get_n_most_read_books(1)) print(tomerater.get_n_most_read_books(2)) print(tomerater.get_n_most_read_books(4)) print(tomerater.get_n_most_read_books(10)) print("\r\n***** Testing TomeRater get_n_most_prolific_readers method") print(tomerater.get_n_most_prolific_readers(1)) print(tomerater.get_n_most_prolific_readers(2)) print(tomerater.get_n_most_prolific_readers(3)) print("\r\n***** Testing TomeRater get_n_most_expensive_books method") print(tomerater.get_n_most_expensive_books(1)) print(tomerater.get_n_most_expensive_books(2)) print(tomerater.get_n_most_expensive_books(3)) print("\r\n***** Testing TomeRater get_worth_of_user method") print(tomerater.get_worth_of_user("*****@*****.**")) print(tomerater.get_worth_of_user("*****@*****.**")) print(tomerater.get_worth_of_user("*****@*****.**"))
Tome_Rater.add_book_to_user(nonfiction1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) #Uncomment these to test your functions: Tome_Rater.print_catalog() Tome_Rater.print_users() print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print("Most read book:") print(Tome_Rater.most_read_book()) print("Most read 2 books:") print(Tome_Rater.get_n_most_read_books(2)) print("Most prolific 2 users:") most_prolific_users = Tome_Rater.get_n_most_prolific_readers(2) print(most_prolific_users) print("Most expensive 2 books:") print(Tome_Rater.get_n_most_expensive_books(2)) print("Worth of most positive user:"******"Worth of prolific user {}".format(user.get_name())) print(Tome_Rater.get_worth_of_user(user.get_email()))
print('Adding books to a user one by one, with ratings') Tome_Rater.add_book_to_user(book1, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction1, "*****@*****.**", 3) Tome_Rater.add_book_to_user(nonfiction2, "*****@*****.**", 4) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 1) Tome_Rater.add_book_to_user(novel2, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 2) Tome_Rater.add_book_to_user(novel3, "*****@*****.**", 4) Tome_Rater.add_book_to_user(book2, "*****@*****.**", 4) #Uncomment these to test your functions: Tome_Rater.print_catalog() Tome_Rater.print_users() print("Most positive user:"******"Highest rated book:") print(Tome_Rater.highest_rated_book()) print("Most read book:") print(Tome_Rater.most_read_book()) print('n most read books') print(Tome_Rater.get_n_most_read_books(6)) print('n most prolific readers') print(Tome_Rater.get_n_most_prolific_readers(4)) print("Most worth books:") print(Tome_Rater.get_worth_of_user('*****@*****.**')) print("n most expensive book:") print(Tome_Rater.get_n_most_expensive_books(6))