Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialcrosscheckking
25,155 PointsHarder Time Machine Code Problem
I am having trouble figuring out what is wrong with my code. I looked at a previous solution posted on the forums, and their solution worked; however, I can't figure out what their code is doing differently. They are pretty similar. When I call time_machine(5, 'years'), I get the an answer that is a couple of days off (I'm assuming for leap years?). Here is the code to the solution that worked:
import datetime
starter = datetime.datetime(2015, 10, 21, 16, 29)
def time_machine(n, string):
if string == 'minutes': return starter + datetime.timedelta(minutes = n)
if string == 'hours': return starter + datetime.timedelta(hours = n)
if string == 'days': return starter + datetime.timedelta(days = n)
if string == 'years': return starter + datetime.timedelta(days = n*365)
return starter + datetime.timedelta(string = n)
import datetime
starter = datetime.datetime(2015, 10, 21, 16, 29)
# Remember, you can't set "years" on a timedelta!
# Consider a year to be 365 days.
## Example
# time_machine(5, "minutes") => datetime(2015, 10, 21, 16, 34)
def time_machine(integer, string):
if string == 'years':
return starter + datetime.timedelta(days = 365*integer)
if string == 'days':
return starter + datetime.timedelta(days = integer)
if string == 'minutes':
return starter + datetime.timedelta(minutes = integer)
if string == 'seconds':
return starter + datetime.timedelta(seconds = integer)
1 Answer
Jeff Wilton
16,646 PointsThe big difference with your code is that you are evaluating 'seconds' instead of 'hours'. If you switch that, then it should pass. You are correct that there is a critical flaw in this code because it is not accounting for leap years, but hey - its just a practice assignment! :)
crosscheckking
25,155 Pointscrosscheckking
25,155 PointsThank you! For some reason my mind completely blanked there.