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

Bill Leddy
Bill Leddy
2,720 Points

My code runs as I expect in my python shell but the code checker complains of wrong result

here is my code from the shell. Am I misunderstanding the question?

def covers(which): ... out = [] ... for course, subjects in COURSES.items(): ... if which <= subjects: ... out.append(course) ... return out ...
... covers({'Python'}) ['Python Basics']

Thanks! Bill

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(which):
    out = []
    for course, subjects in COURSES.items():
        if which <= subjects:
            out.append(course)
    return out

1 Answer

I believe your code is not allowing for the "overlap" requirement

If you submitted search was for {"floats","HTML"} then your code only return ['PHP Basics']

, however the overlap requirement of the challenge would expect ['Python Basics', 'PHP Basics', 'Ruby Basics'] to be the result.

Bill Leddy
Bill Leddy
2,720 Points

Thanks cb123,

In case anyone (other than me) cares,

if which <= subjects

should be:

if len(which | subjects) > 0:

to find the intersection of which and subjects.