Build a Pin Extractor - Step 19

Tell us what’s happening:

I have failed to allow the function to return secret_codes. Please help. Thank you.

Your code so far


# User Editable Region

def pin_extractor(poems):
    secret_codes = []
    for poem in poems:
        secret_code = ''
        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'
        secret_codes.append(secret_code)
        return secret_codes
        

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'

print(pin_extractor(poem))
    

# 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/143.0.0.0 Safari/537.36

Challenge Information:

Build a Pin Extractor - Step 19

Can you say what you are asked to do in this step, please?

1 Like

The test does not pass. The console is clear. What is suggested is that the function should finally return secret_codes.

The instructions ask you to make 3 changes to the program.

You have done 2 of them.

  1. return secret_codes :white_check_mark:, then
  2. uncomment the function call :white_check_mark: and

What is the third thing the instructions ask?

1 Like

Third thing is to uncomment the function call, I did by removing # from the bottom function and changed the arguments. I need another hint.

No, that’s the second thing. What does it say in the instructions after “uncomment the function call and” ?

Did you change the argument?

It seems to be the same?

Final call I made was :

print(pin_extractor([poem, poem2, poem3]))

did not pass and tells me to do the same thing. Console clear,

1 Like

Did you do all 3 things listed in the instructions?

Please share your full updated code.

I’ve edited your post to improve the readability of the code. When you enter a code block into a forum post, please precede it with three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add the backticks.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (').

Why do you have two forum accounts? That could get a bit confusing…

I have two emails that sort of ride on one another, if there is such a thing. My weak computer literacy really. Regrets.

My code currently:

def pin_extractor(poems):

secret_codes = \[\]

for poem in poems:

    secret_code = ''

    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'

    secret_codes.append(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’

print(pin_extractor([poem, poem2, poem3]))

return secret_codes

The control shows indentation error. the function is required to return secret_codes which I am trying to do.

Thank you.

You need to format your code so that it’s readable. I’ve provided instructions to do that here:

Do you have an error message in the console?

Your code was almost correct the first time, you just needed to update the arguments.

The error message is “indentation error” which I have tried to manipulate. Should the print call go last or the return? I am not certain about that. Thanks so much.

Your return is at the end of your code, but it needs to be inside your function. That’s why it’s indented.

However you can’t just indent something outside the function, that’s why you have an error.

You also cannot have return outside a function. return signals the end of a function.

1 Like

Still no pass. I have [5202] only in the console. Message :The function should return secret_codes at the end.

Did you change something?

You’ll need to share your updated code.

Please try to format it correctly?

def pin_extractor(poems):

secret_codes = \[\]

for poem in poems:

    secret_code = ''

    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'

    secret_codes.append(secret_code)

    return secret_codes

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’

print(pin_extractor([poem, poem2, poem3]))

This is how it looks now.

and?
does it work?

What happens when you test it?

It does not pass . Message : function should return secret_codes and [5262] in console.

What does it do when you test the function? Any errors?

How does the output look?

It basically looks correct, but it’s impossible to help you if you cannot format this correctly.

Please format your code. I’ve provided instructions previously. Did you try them?

Please let me know if you have any questions about that.