Pybites Logo

Calculate number of books to have read at date ...

Level: Intermediate (score: 3)

For this Bite you are asked to start working on a reading goal feature for PyBites My Reading List.

Code up get_number_books_read that takes a yearly # books to read int and then calculates the amount of books user should have read based on the at_date argument which defaults to NOW. So if the goal is 52, and we call this function week 11, it should return 11. If the goal is 100 and we call this function in week 47 the function should return 90 (47/52*100), rounding to int. Some more examples:

>>> get_number_books_read(100, 'Sunday, March 25th, 2019')
25
>>> get_number_books_read(52, 'Sunday, March 18th, 2019')
12
>>> get_number_books_read(52, '5-20-2018')
Traceback (most recent call last):
  File "", line 1, in 
  File "/Users/bbelderbos/code/bitesofpy/186/books.py", line 20, in get_number_books_read
    raise ValueError('Should have positive goal and future date')
ValueError: Should have positive goal and future date

Check the docstring, comments and tests for more guidance. For simplicity you can assume that a year has 52 weeks (hence WEEKS_PER_YEAR = 52). Hint: to get the week of the year, look into isocalendar. Keep calm and code in Python!