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 trialMichael Aronian
Python Web Development Techdegree Student 5,453 PointsI can't seem to get this one right
I can't find the right code for this one.
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):
course = []
for key, value in COURSES.items():
if value & arg:
course.append(key)
return course
def covers_all(*arg):
course = []
for key, value in COURSES.items():
if value.issuperset(arg):
course.append(key)
return course
2 Answers
Pete P
7,613 PointsWorked for me after removing the asterisk from *arg.
Hopefully someone can clarify this better, but I believe *arg is used when you are passing an unknown amount of arguments to a function that is prepared to unpack them. Right now whatever set is being passed into your function gets unpacked into a tuple with the set being the only element of that tuple.
Chris Freeman
Treehouse Moderator 68,441 PointsPete P's answer is close enough to be correct. In short, the parameter and its use as an argument to issubset()
need to agree: either both have an asterisk or neither. This way it's either a single variable received and used or a tuple received and unpacked for use.
# without asterisks
def covers_all(arg):
course = []
for key, value in COURSES.items():
if value.issuperset(arg):
course.append(key)
return course
# or with asterisks
def covers_all(*arg):
course = []
for key, value in COURSES.items():
if value.issuperset(*arg):
course.append(key)
return course
Pete P
7,613 PointsThanks for clarifying that Chris! As always, much appreciated.