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 trial

Python Python Basics (2015) Shopping List App Refactor

code refactoring

Am trying to create a main function which houses all the remaining code from line 22 to line 45

def show_help():
    # print out instructions on how to use the app
    print("What should we pick up at the store?")
Enter 'DONE' to stop adding items.
Enter 'HELP' for this help.
Enter 'SHOW' to see your current list.

def show_list(shopping_list):
    # print out the list
    print("Here's your list:")

    for item in shopping_list:

def add_to_list(shopping_list, new_item):
    # add new items to our list
    print("Added {}. List now has {} items.".format(new_item, len(shopping_list)))
    return shopping_list

def main():


# make a list to hold onto our items
    shopping_list = []

    while True:
    # ask for new items
         new_item = input("> ")

    # be able to quit the app
    if new_item == 'DONE':
    elif new_item == 'HELP':
    elif new_item == 'SHOW':
    add_to_list(shopping_list, new_item)


1 Answer

Alex Koumparos
Alex Koumparos
Python Development Techdegree Student 36,887 Points

Hi Clainos,

Your problem is indentation. Python is very fussy about how far every line is indented (this is how the Python interpreter understands where things like functions and loops and conditionals end). Even though all the text in your code is the same as the challenge, because you have changed the indentation, the code now functions differently.

For example, in the original code the if is indented 4 spaces from the while. This is how Python knows that the if should be executed in the while loop rather than after the while loop finishes. In your code the if is indented at the same level as while.

I suggest that you restart the challenge to get a clean version of the code, add the function declaration exactly like you did before and then carefully ensure that every line that now belongs in your main function is indented by the same number of characters. Then your code will pass.