7/15 what is wrong?


#1
> def reverse(text):
>     ls_text=[]
>     for index in range(0,len(text)-1):
>         ls_text.append(text[len(text)-1-index])
>     result=''.join(ls_text)
>     return result

> print reverse('abc')

the printed result was 'cb', not 'cba'.

So i changed
> range(0,len(text)-1)
into
> range(0,len(text))
then the code gave a desired result.
But i don't understand why the range should include len(text).
For example, in the case of inputting 'abc' to this function
> len(text)-1-index
would be -1 when the value of index go through 3.


#2

Well, you need len(text) in you for loop if you don't know how long the string is going to be. The exercises runs multiply strings of a variety of lengths to see your code reverses the text correctly, so you you need to loop over the text no matter how long the string is


#3

Hi @yunrori94 ,

If you are using indexes to iterate through a list, you need to use the len of the list to control the either the start or the end of the loop. When using the range function, remember that the end value of the range is the first value that is not included within the range, subject to the direction in which the iteration is proceeding.

If you are starting at index 0 and ascending through the indexes, the len of the list will be 1 higher than the last index, therefore it is an appropriate end value for the range that controls the loop.

If, instead, you are starting at the highest index in the list and descending down to 0, then subtract 1 from the len of the list to determine at which index to start the range. The len of the list is 1 higher than the highest index. You will be working down to index 0, so you would need to specify -1 as the ending value of the range, so that it stops at 0.


#5

oh....i thought the end value of range function is also included within the range.
Thanks a lot ^^//