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 trialPhilip Finch
5,262 PointsWhy not end the if block with an else?
I notice Kenneth doesn't end the if block with an else. Functionally i don't see any difference between the following two blocks of code. Is there a benefit either to using or not using an else statement to put the add_to_list(new_item) function in at the end?
his code:
while True:
new_item = input("> ")
if new_item == "DONE":
break
elif new_item == "HELP":
show_help()
continue
elif new_item == "SHOW":
show_list()
continue
add_to_list(new_item)
continue
my code:
while True:
new_item = input("> ")
if new_item == "DONE":
break
elif new_item == "HELP":
show_help()
continue
elif new_item == "SHOW":
show_list()
continue
else:
add_to_list(new_item)
continue
2 Answers
Dor Rondel
642 PointsThis segment of the code:
else:
add_to_list(new_item)
continue
will only run if none of the other 3 requirements are met, hence "else" implying that if and elif requirements aren't met. We want anything that is inputted to be added new_item therefore we put it outside the if-else block of code. This implies that regardless to whether the conditions of the if and elifs are met, the input will be added to new_item
Nicolas Hampton
44,638 PointsWhat you're looking for (I was actually looking myself, because I had the same thought, but forgot to put the colon after my else statement) is this:
show_help()
while True:
new_item = input("> ")
if new_item == "DONE":
break
elif new_item == 'HELP':
show_help()
elif new_item == 'SHOW':
show_list()
else:
add_to_list(new_item)
show_list()
This structure using else allows us to test for all the different commands that we want to accept. If and only if all the commands are not present, then we'll add the item to the list, thus avoiding adding commands to the list. Putting the add_to_list function in a 'catch everything else' else statement at the end also allows us to avoid code dangling outside of the if/elif/else test, so we can remove all of our 'continue's, keeping our code a lot DRYer (avoiding repetition). I know it's kinda late, but hopefully this can help someone later. Happy coding!
Arthur The Dog
16,070 PointsArthur The Dog
16,070 Points... and the
add_to_list(new_item)
can potentially be run multiple times because it's part of the loop. Whereas, in the "his code", it will only be run once.Philip Finch
5,262 PointsPhilip Finch
5,262 PointsDor Rondel : We don't want all inputs to be added to new_item. We don't want "DONE", "HELP", or "SHOW" added to new_item, and it seems both versions function the exact same way because there's a break or continue after each if/elif.
Arthur The Dog : In his code the add_to_list(new_item) is still part of the loop, it's just dropped down an extra line.