Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python Python Basics (2015) Shopping List App Break

Python Basics "Break" Task 2 of 2

I cannot seem to figure out what error I have committed (syntax, or otherwise) for the following script (Python Basics, "Break" Task 2 of 2):

def loopy(items): for eachthing in items: print(items) # Code goes here if eachthing == "STOP": break

When I copy this into IDLE and take it for a spin, I get the message that the "break" is outside the loop, but it does not seem to matter how I indent. I have tried indenting the above code many different ways.

I sometimes get a cryptic error message to the effect that not all "items" are being printed, which would point to some sort of loop issue, but where, pray tell?

I may not understand how a "break" works, as well as flow control works.

The task questions can sometimes be ambiguously worded, and I may have missed something.

I based my script on the notes I took from the previous video lesson.

Thank you.

breaks.py
def loopy(items):
    for eachthing in items:
        print(items) # Code goes here
    if eachthing == "STOP":
        break

3 Answers

Stuart Wright
Stuart Wright
41,102 Points

Your if statement needs to be inside your for loop, and before your print statement. That way if the item = 'STOP', the loop will break and the current item will not be printed.

The other issue is that your current print statement is printing 'items', which is the full list. You only want to print one item at a time, so print(eachthing) is what you need here.

Full code should be as follows:

def loopy(items):
    for eachthing in items:
        if eachthing == "STOP":
            break
        else:
            print(eachthing)    

Stuart, Thank you for the highly clear explanation. My mistakes look obvious after you kindly pointed them out.

I appreciate your time and help!

Can you please provide Stuart a Best Answer? It will mark your question as answered, and that can be helpful to other students who are willing to help others (like me) tell if a question is answer just by looking :smile:

Thanks! :+1:

Done! Thank you!