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 trialsantosh kumar peddineni
Python Web Development Techdegree Student 2,661 Pointsmy code works fine in the workspace but not in the task
can someone help me whats wrong in my covers_all code, it gives me the correct results in the workspace.
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(arg):
subject = []
for key, value in arg.items():
if value & arg:
subject.append(key)
return subject
def covers_all(arg):
subject = []
for key, value in COURSES.items():
if len(arg.intersection(value)) == len(arg):
subject.append(key)
return subject
1 Answer
Jeff Muday
Treehouse Moderator 28,722 PointsYou were pretty close to a solution. Look at my comments which indicate where changes are needed.
As a kind suggestion, you might want to consider using slightly better names than "arg", "key", and "value" as these don't give the code reader any indication what the variable represents and contains.
I would suggest the "arg" variable would be better named "topics", and "key" be "course_name", and "value" be "course_topics". The reader of the code would easily understand your intention.
def covers(arg):
subject = []
for key, value in COURSES.items(): # here iterate over courses key, values
if arg & value:
subject.append(key)
return subject
def covers_all(arg):
subject = []
for key, value in COURSES.items():
if value.issuperset(arg): # checks if "value" is a superset of arg
subject.append(key)
return subject