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 Python Collections (2016, retired 2019) Sets Set Math

Cody Selman
Cody Selman
7,643 Points

Set Math Challenge 1 - Not Sure What's Wrong With My Answer

I keep getting this error when checking my answer:

"Bummer: Didn't get the right output from covers."

My covers function seems to satisfy every test I throw at it. Here is my covers function:

def covers(topics_set):
    course_list = []
    for course in COURSES:
        if topics_set.issubset(COURSES[course]):
            course_list.append(course)
    return course_list

Is there something wrong with my function that I'm not seeing? Any help would be appreciated.

Best regards,

sets.py
COURSES = {
    "Python Basics": {"Python", "functions", "variables",
                      "booleans", "integers", "floats",
                      "arrays", "strings", "exceptions",
                      "conditions", "input", "loops"},
    "Java Basics": {"Java", "strings", "variables",
                    "input", "exceptions", "integers",
                    "booleans", "loops"},
    "PHP Basics": {"PHP", "variables", "conditions",
                   "integers", "floats", "strings",
                   "booleans", "HTML"},
    "Ruby Basics": {"Ruby", "strings", "floats",
                    "integers", "conditions",
                    "functions", "input"}
}

def covers(topics_set):
    course_list = []
    for course in COURSES:
        if topics_set.issubset(COURSES[course]):
            course_list.append(course)
    return course_list
Dave StSomeWhere
Dave StSomeWhere
19,870 Points

Your code also fails the challenge checker for me with the same error (some times restarting the challenge and/or your browser works, I did try a restart, didn't restart my browser). The code does appear to work locally for me and I tested 5 or 6 different test cases. Sure seems like the challenge checker is messing up. You might want to send a message to support, or maybe a mod will see this and help you out.

I compared your code to one that passed the challenge and received two different outputs

def covers(topics_set):
    course_list = []
    for course in COURSES:
        if topics_set.issubset(COURSES[course]):
            course_list.append(course)
    return course_list

def covers2(topics):
    common_list=[]
    for subject,course in COURSES.items():
        common_subject=topics.intersection(course)
        if len(common_subject)>0:
            common_list.append(subject)
    return common_list

print(covers({"strings","floats"}))     
print(covers2({"strings","floats"})) 

results:

['Python Basics', 'PHP Basics', 'Ruby Basics']
['Python Basics', 'Java Basics', 'PHP Basics', 'Ruby Basics']

Dave StSomeWhere
Dave StSomeWhere
19,870 Points

Very interesting Kris, changing it from subset to intersection does pass the challenge. For print(covers({"strings","floats"})) the result includes Java Basics which doesn't have floats. Something is fishy :fish:

Here's a prior answer that might explain - Another Answer - I guess reading it as overlap means if any of set 1 are in set 2 and I did use intersection when I did this challenge.

1 Answer

Cody Selman
Cody Selman
7,643 Points

Okay, I understand what the issue was. I had just misunderstood the question. The intention was for the function to return any courses that have any of the given topics, rather than having all of the given topics. Changing issubset to intersection made my code pass the challenge.

It's times like these that I wish TreeHouse had a more detailed error message for why your code fails a challenge. CodeWars has a really good way of handling these code challenges, for example.

Thank you everyone! This was the first time I ever had to just give up on a code challenge and move on so I'm really happy to be able to revisit it and solve the challenge.

I think you replied as a comment, Kris. Feel free to reply as an answer here so I can give you the Best Answer and close this thread.

Best regards,