[Tutor] Program for outputing the letter backward

Ed Singleton singletoned at gmail.com
Thu Mar 30 10:48:22 CEST 2006


On 29/03/06, Hoffmann <oasf2004 at yahoo.com> wrote:
> --- John Fouhy <john at fouhy.net> wrote:
>
> > On 29/03/06, Hoffmann <oasf2004 at yahoo.com> wrote:
> > > vehicle='car'
> > > index = vehicle[-1]       #the last letter
> > > index_zero = vehicle[0]   #the first letter
> > >
> > > while index >= index_zero:
> > >    letter=vehicle[index]
> > >    print letter
> > >    index -= 1
> > >
> > > The problem is that I get no output here. Could I
> > hear
> > > from you?
> >
> > I can print the letters backwards like this:
> >
> > vehicle = 'car'
> > print vehicle[2]
> > print vehicle[1]
> > print vehicle[0]
> >
> > Output:
> >
> > r
> > a
> > c
> >
> > -----
> >
> > This is not very useful, though, because it will
> > only work for strings
> > that are exactly three letters long.  Can you see
> > how to write a loop
> > to produe this output?
> >
> > Hint: the len() function will tell you how long a
> > string is.
> >
> > eg: if vehicle == 'car' then len(vehicle) == 3.
> >
> > --
> > John.
> > _______________________________________________
>
> Hi John,
>
> I am still 'blind' here.
>
> Please, see below what I did, and what I got:
>
> >>> vehicle='car'
> >>> index = 0
> >>> lenght =len(vehicle)
> >>> last = vehicle[lenght -1]
> >>> while last >= vehicle[0]:
> ...     letter = vehicle[index]
> ...     print letter
> ...     last -= 1
> ...
> c
> Traceback (most recent call last):
>   File "<stdin>", line 4, in ?
> TypeError: unsupported operand type(s) for -=: 'str'
> and 'int'
>
> As you can see, I am still a newbie...
> Could anyone, please, guide me on this exercise?
> Thanks!
> Hoffmann

A technique I used to find useful when I was very first learning (and
struggling) was to calculate the variables for each pass of the loop
(basically remove all the variable names, just like doing algebra).

So:

>>> vehicle='car'
>>> index = 0
>>> lenght = len(vehicle) # therefore:
>>> lenght = 3
>>> last = vehicle[lenght -1] # therefore:
>>> last = vehicle[2] # therefore:
>>> last = "r"
>>> while "r" >= "c": # first pass
...     letter = vehicle[index] # therefore:
...     letter = vehicle[0] # therefore:
...     letter = "c"
...     print letter
...     last -= 1 # therefore:
...     "r" -= 1 # therefore:
...     "r" = "r" - 1 # therefore:
...     ERROR

You'll find that that can make it much clearer what is actually
happening.  An alternative is to use lots and lots of print
statements:

>>> vehicle='car'
>>> print vehicle
>>> index = 0
>>> print index
>>> lenght = len(vehicle)
>>> print lenght

and so on...

It would be really good if there was a way to have a "verbose"
interpreter that showed you each of the steps in the process, but I
don't know of any.

For example:

>>> last = vehicle[lenght -1]
last = vehicle[2]
last = "r"
>>>

Ed


More information about the Tutor mailing list