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

Not sure why covers() isn't working?

Hello, I am not sure what is wrong with my code here. As far as I can tell it returns what is requested... help?

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):
    matches = []
    for course in COURSES:
        if topics & COURSES[course]:
            matches.extend(course)
    return matches

1 Answer

Alex Koumparos
seal-mask
.a{fill-rule:evenodd;}techdegree
Alex Koumparos
Python Development Techdegree Student 36,887 Points

Hi Vincent,

Did you check what your function is actually outputting? I tried it with an input of {'booleans', 'variables'} and the output I saw was:

['P', 'y', 't', 'h', 'o', 'n', ' ', 'B', 'a', 's', 'i', 'c', 's', 'J', 'a', 'v', 'a', ' ', 'B', 'a', 's', 'i', 'c', 's', 'P', 'H', 'P', ' ', 'B', 'a', 's', 'i', 'c', 's']

The reason for this is that you are using the extend list method instead of append. This method adds each element of an iterable to a list, whereas append adds the whole object to the list. In your case you are working with course which is a string. Here is an example comparing the difference in behaviour with a string:

temp_list = []
itr = 'hello'
temp_list.extend(itr)  # ['h', 'e', 'l', 'l', 'o']
temp_list.append(itr) # ['h', 'e', 'l', 'l', 'o', 'hello']

Hope that clears everything up for you.

Cheers

Alex