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 trialVincent Allport
3,317 PointsNot 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?
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
Python Development Techdegree Student 36,887 PointsHi 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