I don’t seem to be able to crack this step. Please, could you help me?
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 line_index < len(words):
secret_code += str(len(words[line_index]))
else:
secret_code += '0'
return secret_code
# User Editable Region
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))
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
def pin_extractor(poems):
for poem in poems:
secret_code = ''
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index < len(words):
secret_code += str(len(words[line_index]))
else:
secret_code += '0'
return secret_code
Still not working (I set the return secret_code in the loop, but it doesn’t work).
def pin_extractor(poems):
for poem in poems:
secret_code = ''
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index < len(words):
secret_code += str(len(words[line_index]))
else:
secret_code += '0'
return secret_code
I have tried with the following code, but it is not working:
def pin_extractor(poems):
for poem in poems:
secret_code = ''
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index < len(words):
secret_code += str(len(words[line_index]))
else:
secret_code += '0'
return secret_code
def pin_extractor(poems):
for poem in poems:
secret_code = ""
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index > len(words):
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'
print(pin_extractor(poems))
It looks like you may have changed the starting code in areas you were not asked to change, which will cause the tests to fail. Please click the reset button to restore the original code and try again.
It is great that you solved the challenge, but instead of posting your full working solution, it is best to stay focused on answering the original poster’s question(s) and help guide them with hints and suggestions to solve their own issues with the challenge. How to Help Someone with Their Code Using the Socratic Method
We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.
def pin_extractor(poems):
for poem in poems:
secret_code = ""
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index < len(words):
secret_code += str(len(words[line_index]))
else:
secret_code += '0'
print(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'
pin_extractor([poem, poem2, poem3])
It doesn’t look to me like you have reset this step to restore the starting code, which you changed. As mentioned earlier, a change to the starting code will break the tests.
def pin_extractor(poems):
for poem in poems:
secret_code = ""
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index < len(words):
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'
print (pin_extractor([poem, poem2, poem3]))
It tells me “You should move the existing body of the function into the new for loop.”
def pin_extractor(poems):
for poem in poems:
secret_code = ""
lines = poem.split('\n')
for line_index, line in enumerate(lines):
words = line.split()
if line_index < len(words):
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'
print (pin_extractor([poem, poem2, poem3]))
as long as you have unexpected lines of code inside the function, the tests will fail, please use the reset button to restore the starting code of this step, and add again the loop without changing any of the existing line (changing only their indentation)