7. Reverse


#1

https://www.codecademy.com/courses/python-intermediate-en-rCQKw/1/1?curriculum_id=4f89dab3d788890003000096

Hello, I've been stuck at this exercise. Please help.

def reverse(text):
    rev_word = "" 
    length = len(text)
    for i in range(0,length):
        rev_word = rev_word + str(text)[length-i]
    return str(rev_word)

File "python", line 5
SyntaxError: can't assign to function call

Oops, try again. Did you create a function called reverse? Your code threw a "global name 'reverse' is not defined" error.

Why does it think that function "reverse" is not defined if it IS?
Sure, I can solve this exercise with use of list and .append() like everyone else do in related topics, but concatenation should be viable too and I need to know what's wrong here.


#2

I try your code and here is the outpout error :

Oops, try again. Your code looks a bit off--it threw a "string index out of range" error. Check the Hint if you need help!

this error generate because length of text , if we take for example text 'test' the lenght is 4 , so if we try to output the fourth lettre our code is "test"[3] not "test"[4] we begin by 0 not 1


#3

I know, but i tried to test "for i in range(0,length): print i" for separate string and it printed numbers from 0 to 3, so indexation is OK imo; length - i goes from 3 to 0, because the starting i is 0.
Can you point out what do I need to change?
No matter how I change the code there's only "reverse is not defined" or "string index out of range".


#4

nvm, I solved the problem by changing the program so there's i instead of length-i, but the cause of error is unknown

Maybe it's a bug, because things like "i print a b c in this order and it prints c a b" happened a few times anyway


7. reverse help
#5

this how i correct it ; so [length-i-1] start from 3 not 4

def reverse(text):
    rev_word = "" 
    length = len(text)
    print length
    for i in range(0,length):
        rev_word = rev_word + str(text)[length-i-1]
    return str(rev_word)
print reverse("text")

7. reverse help
#6
Another way of doing it..
def reverse(text):
        x, new = str(text), ""
        c = len(x)
        while c > 0:
    	    c -= 1
    	    new = new + x[c]
        return new

#7

Here's how one would do it in order to understand how to effectively use lists to store each character of the string. This way may require more lines of code, but I want to ensure it includes the usage of lists and the for and while loops.

def reverse(text):
    reversed_text = ""
    #put text in a list
    the_list = []
    for char in text:
        the_list.append(char)
    n = len(the_list) - 1
    while n >= 0:
        reversed_text += the_list[n]
        n -= 1
    return reversed_text

reverse(raw_input("Enter a string"))