Build a Pin Extractor - Step 17

Tell us what’s happening:

Code is nor executing even after making all the required corrections.

Getting this message - You should move the existing body of the function into the new for loop.

Your code so far


# User Editable Region

def pin_extractor(poems):
    secret_code = ""
    
    for poem in poems: 
        lines = poem.split('\n') 
        for line_index, line in enumerate(lines): 
            words = line.split()
            if len(words) > line_index: 
                secret_code += str(len(words[line_index]))
            else:
                secret_code += '0'
                
    return secret_code


poem = """Stars and the moon
shine in the sky
white and
until the end of the night"""
poem2 = 'The grass is green\nhere and there\nhoping for rain\nbefore it turns yellow'
poem3 = 'There\nonce\nwas\na\ndragon'
poems = [poem, poem2, poem3]

# (pin_extractor(poems))

# User Editable Region

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36

Challenge Information:

Build a Pin Extractor - Step 17
https://www.freecodecamp.org/learn/full-stack-developer/workshop-pin-extractor/step-17

Why have you separated this line?

secret_code = ""

You also have an indentation error on the return statement.

Not getting indentation error on the return statement

Just this message - You should move the existing body of the function into the new for loop.

I ran your code and corrected the issues I mentioned above with it and it passed.

If you want to ignore issues raised and not answer questions put to you, like why did you separate a particular line, then we can’t really help.

Please address the issues I have suggested. If you don’t understand what has been asked then say.

It may also help if you reset the step and follow the instructions carefully and what you are asked to do and be careful with indentation.

Thank you! That was really helpful. Fixing the indentation made all the difference. I appreciate you taking the time to run the code and point out those exact errors.

1 Like

hello ! someone cans help me here def pin_extractor(poems):

result = \[\]



for poem in poems:

    secret_code = "0"

    

    lines = poem.strip().split('\\n')



    for line_index, line in enumerate(lines):

        words = line.split()



        if not words:

            

            secret_code += "0"

        elif len(words) > line_index:

            

            secret_code += str(len(words\[line_index\]))

        else:

            

            secret_code += str(len(words\[-1\]))



    result.append(secret_code)



return result

poem1 = “”"Stars and the moon

shine in the sky

white and

until the end of the night"“”

poem2 = “”"The grass is green

here and there

hoping for rain

before it turns yellow"“”

poem3 = “”"There

once

was

a

dragon"“”

codes = pin_extractor([poem1, poem2, poem3])

print(codes)

please create your own topic

If you have a question about a specific challenge as it relates to your written code for that challenge and need some help, click the Help button located on the challenge.

The Help button will create a new topic with all code you have written and include a link to the challenge also. You will still be able to ask any questions in the post before submitting it to the forum.

Thank you.