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 trial

Python Functional Python Functional Workhorses Map and Filter

Dat Ngo
Dat Ngo
1,309 Points

Challenge Task 3

What's wrong with my code

birthdays.py
import datetime

birthdays = [
    datetime.datetime(2012, 4, 29),
    datetime.datetime(2006, 8, 9),
    datetime.datetime(1978, 5, 16),
    datetime.datetime(1981, 8, 15),
    datetime.datetime(2001, 7, 4),
    datetime.datetime(1999, 12, 30)
]

today = datetime.datetime.today()
def is_over_13(dt):
    delta = today - dt
    return delta.days >= 4745

def date_string(dt):
    return dt.strftime("%B %d")

birth_dates = map(date_string, filter(is_over_13, birthdays))
Chris Freeman
Chris Freeman
Treehouse Moderator 68,423 Points

There may be a bug in the checker due to international local time verses the challenge checkers local time. I noticed that one of the dates in the sample data is 9 Aug 2006 which is exactly 13 years ago today! Please try your code tomorrow to see if it still works as is. If so, I'll file a bug report. Thanks for your patients!

2 Answers

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 68,423 Points

It is looking more like an international date time round off with the sample data 9 Aug 2006 date being very close to exactly 13 years old.

Update: It is a bug in the checker that has a hard coded expected value. As the second date moved passed 13 years ago from today's date the results of the map/filter will change.

A temporary work-around would be to change the data so that the second date is at least 4 days later than date you run the challenge.:

birthdays = [
    datetime.datetime(2012, 4, 29),
    # change line below to 
    datetime.datetime(2006, 8, 13),  # changed from (2006, 8, 9)
    datetime.datetime(1978, 5, 16),
    datetime.datetime(1981, 8, 15),
    datetime.datetime(2001, 7, 4),
    datetime.datetime(1999, 12, 30)
]

With this change, your code will pass the challenge!!

Richard A
PLUS
Richard A
Courses Plus Student 10,121 Points

Hi Chris Freeman , just to confirm your suspicions, I do believe this was a bug in the checker. I had this problem las week too. Going back to this challenge, I tried your solution and unfortunately, it didn't work. I did however change other values in the birthdays list to random values and only then did I finally pass this challenge.

Chris Freeman
Chris Freeman
Treehouse Moderator 68,423 Points

Unfortunately, my workaround fix "expired" on 9 Aug 2019, since today continuously moves. :-) A bug report has been filed.