[Tutor] implementing rot 13 problems
Danny Yoo
dyoo at hashcollision.org
Tue Mar 12 20:05:23 CET 2013
On Tue, Mar 12, 2013 at 9:00 AM, RJ Ewing <ewing.rj at gmail.com> wrote:
> Thank you all for the help. I really appreciated the suggestions. Some of
> the things you pointed out, I originally used, but started changing thing
> when it wasn't working. I got it to work, but if you could let me know if
> there is anything I should do to make this code more pythonesque that would
> be great.
Two suggestions:
1. Since rot_text itself doesn't use any of the state of the object,
it makes sense to treat it as a plain function.
2. Explicit array mutation here can be avoided here; it turns out
that writing it without mutation is a little easier to read, and is
less bug prone.
Here's what your code looks like with these two suggestions:
##################################
## rot1: char -> char
## Rotates a single character.
def rot1(char):
if char.isupper() or char.islower():
test = 'M' if char.isupper() else 'm'
if char <= test:
return chr(ord(char) + 13)
else:
return chr(ord(char) - 13)
## rot_string: string -> string
## Rotates all the characters.
def rot_string(s):
return "".join([rot1(ch) for ch in s])
##################################
I've refactored the heart of the rotation logic into rot1(). Note
that it doesn't care about arrays or not: its own concern is the
rotation of a single character.
Good luck!
More information about the Tutor
mailing list