Dragos Ionescu wrote:
---- Original Message ----
From: Steve Willoughby <[EMAIL PROTECTED]>
To: Dragos Ionescu <[EMAIL PROTECTED]>
Cc: bob gailer <[EMAIL PROTECTED]>; David <[EMAIL PROTECTED]>; tutor@python.org
Sent: Saturday, October 4, 2008 11:04:30 PM
Subject: Re: [Tutor] bug in exam score conversion program

Dragos Ionescu wrote:
 > ----- Original Message ----
 > From: bob gailer <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
 > To: David <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
 > Cc: tutor@python.org <mailto:tutor@python.org>
 > Sent: Saturday, October 4, 2008 10:15:10 PM
 > Subject: Re: [Tutor] bug in exam score conversion program
 >
 > Lots of good responses. And now for something completely different:
 >
 > import string
 > x = string.maketrans('567891', 'FDCBAA')
 > score = raw_input('score>')
 > print "Your grade is:", score[0].translate(x)
 > --
 > Bob Gailer
 > Chapel Hill NC
 > 919-636-4239
 >
 > When we take the time to be aware of our feelings and
 > needs we have more satisfying interatctions with others.
 >
 > Nonviolent Communication provides tools for this awareness.
 >
 > As a coach and trainer I can assist you in learning this process.
 >
 > What is YOUR biggest relationship challenge?
 >
 > _______________________________________________
> Tutor maillist - Tutor@python.org <mailto:Tutor@python.org> <mailto:Tutor@python.org <mailto:Tutor@python.org>>
 > http://mail.python.org/mailman/listinfo/tutor
> > > Wow! Bob Gailer's solution is so elegant. Can someone plese explain what
 > is the algorithm behind  string.maketrans. More exactly, how is this
 > function doing the coding?

Actually, I don't think the point was to be elegant as much
as to get you thinking about something you might not have
explored--never hurts to keep learning new features so you
don't inefficiently apply the same old small set of things
to new problems.

You wouldn't *really* want to implement a production grade
system like that, cute though it is.  This is setting up a
translation table mapping the first character in the score
to a letter grade.  So a 9 is changed to an A.  The obvious
problem though is how it handles a score of, say, "1".  Or,
for that matter, "37".


I know how string.maketrans works. I was wondering how to implement such a function. Would that be very hard? I must admit that I was 'surprised' when I printed x...

How to implement... the equivalent of maketrans/translate?  Pretty
easy really.  maketrans just builds a 256-byte table showing a mapping
from one character set to another (compare perl's y/// or tr///). Once you have that translation table, all you really need to do is take each character of a string and make a new string by looking up each source character and returning what the table says (effectively table[ord(i)] for each character i in the source string). Which is pretty much
what string.translate() is doing.

or did I misunderstand which function you wanted to implement?
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to