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