# Practice makes perfect 7/15 stuck! where to go from here?

#1

This is my code, and it prints abcd, but where can I go from here, Im stuck…what tools can I use to reverse the word?

``````def word(text):
letters = ""
for letter in text:
letters += letter

return letters
print word("abcd")
``````

#2

You could loop in reverse order?

#3

but how do you loop in reverse?

Btw, this is from the lesson - “You may not use reversed or [::-1] to help you with this.”

#4

you could get the length of the string -1 (strings are zero indexed based) and then use a for in range() loop or a while loop

#5

I was also thinking abour range in a for loop, somehow using the indexes of each charatcher with enumerate function , modulo them by 10 and assigning the remainders, which represent each character, to a variable and then print it out, but Im having a really hard time doing that…maybe be Im way off…or maybe its impossible…

#6

^ is the only good bit i read in your answer. Use range() to loop in reverse of the string, then use the integers produced by range as indexes to access characters from `text` and add them to `letters`. This will cause the string to reverse

#7

thats the part Im havig problem with, but just a minute ago I took a look at the link provided by Codecademy explaining how to loop through text starting from the last character using range, and I see that I’ve totally forgot about using STEP inside range, so I’ll try something with that for a few hours and see how that goes

#8

you need step for range, because default step is +1, which is no good for looping in reverse

#9

But if I put the minus operator infront of step, it counts down like we want to…I just tested it like this…

n = “qwert”
print range(len(n) - 1, 0, - 1)

and it gave me [4, 3, 2, 1]

#10

yes, that is the whole idea? `-1` is good for step value for your loop. I just mentioned that default (when you don’t provide step manually) is + 1 (which is no good for your case at the moment)

#11

Oh ok, I thought you meant that I shouldn’t use step at all, my bad

#12

So the question now is, how to turn those numbers into the letters, because if I do the str() like you see in my code, I get 321 printed out…

def word(text):
letters = “”
for letter in range(len(text) - 1, -1, - 1):
letters += str(letter)

``````return letters
``````

print word(“abcd”)

Im thinking something like, if letter == text[]: , assign and print ?

#13

OMG I did it!!! But Im getting an error from Codecademy saying:

Did you create a function called reverse? Your code threw a “global name ‘reverse’ is not defined” error.

Any idea why?

My code:

def word(text):
letters = “”
for letter in range(len(text) - 1, -1, - 1):
x = letter
letters += text[x]
return letters
print word(“abcd”)

#14

You didn’t name your function reverse

#15

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.