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 trialJames Barber
3,502 PointsGetting a "didn't get the right output" feedback. How do I know what output it is looking for?
I tried my code in a local environment and when I call print(prereqs(courses)) it gives me what I believe should be the right answer (an unordered set of the unique course names in all courses and their pre-reqs in the "courses" dictionary that I passed in: {'Python Collections', 'Setting Up a Local Python Environment', 'Python Basics', 'Django Basics', 'Flask Basics', 'Object-Oriented Python'}
I just can't figure out why this quiz doesn't think that's the right answer. The feedback is insufficient to help me understand what it is looking for...
courses = {'count': 2,
'title': 'Django Basics',
'prereqs': [{'count': 3,
'title': 'Object-Oriented Python',
'prereqs': [{'count': 1,
'title': 'Python Collections',
'prereqs': [{'count':0,
'title': 'Python Basics',
'prereqs': []}]},
{'count': 0,
'title': 'Python Basics',
'prereqs': []},
{'count': 0,
'title': 'Setting Up a Local Python Environment',
'prereqs': []}]},
{'count': 0,
'title': 'Flask Basics',
'prereqs': []}]}
def prereqs(data, pres=None):
pres = pres or set()
pres.add(data['title'])
for prereq in data['prereqs']:
pres = prereqs(prereq, pres)
return pres
2 Answers
Chris Freeman
Treehouse Moderator 68,457 PointsI was also initially stumped on this one until I realized the desired solution is only the prerequisites and does not include the top-level course title. That is, the top course isn't a prerequisite of itself. Solution contains 5 courses.
You may rework your code on your own, if you wish, or here is the solution that worked for me:
def prereqs(data, pres=None):
pres = pres or set()
# for each prereq in this courses' prereqs...
for prereq in data['prereqs']:
# add title of this prereq course, then...
pres.add(prereq['title'])
# use recursive call to find further prerequisites of this
# course, if any
prereqs(prereq, pres)
# return current
return pres
James Barber
3,502 PointsAwesome, thank you Chris for the help in understanding the issue and Kenneth for trying to make the directions a bit more clear!
I love these python courses and workshops Kenneth. With just your materials, I have made it to level 4 in Google's Foo.Bar python challenge (will attempt level 5 soon)! :)
Parsenz Dev
13,198 PointsParsenz Dev
13,198 PointsI think the instructions for this particular challenge could be a little more lucid. Also, the error feedback is almost completely unhelpful
Chris Freeman
Treehouse Moderator 68,457 PointsChris Freeman
Treehouse Moderator 68,457 PointsOthers, myself included, have misread the challenge. This is the third forum post with this issue. Perhaps a helpful hint could be included in the
course.py
code:# Do not include the top level course as a prerequisite
Kenneth Love, could adding a hint be worthwhile?
Kenneth Love
Treehouse Guest TeacherKenneth Love
Treehouse Guest TeacherYeah, I'll see about updating the prompt. It's an awkward thing to explain.
James N
17,864 PointsJames N
17,864 PointsThanks for the help! and BTW, congrats on your recent promotion to staff!
Chris Freeman
Treehouse Moderator 68,457 PointsChris Freeman
Treehouse Moderator 68,457 PointsYou're very welcome. Thanks! I am working as a mentor and code reviewer for the exciting new Treehouse Python Web Developer Techdegree program.