[pypy-commit] pypy default: Rewrite rot13() for fun in a much more compact way
arigo
pypy.commits at gmail.com
Tue May 31 15:56:44 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r84845:3ac0ee95e7b3
Date: 2016-05-31 21:56 +0200
http://bitbucket.org/pypy/pypy/changeset/3ac0ee95e7b3/
Log: Rewrite rot13() for fun in a much more compact way
diff --git a/lib_pypy/_pypy_irc_topic.py b/lib_pypy/_pypy_irc_topic.py
--- a/lib_pypy/_pypy_irc_topic.py
+++ b/lib_pypy/_pypy_irc_topic.py
@@ -224,23 +224,9 @@
va ClCl orvat bayl zbqrengryl zntvp vf n tbbq guvat <psobym>
"""
-from string import ascii_uppercase, ascii_lowercase
-
def rot13(data):
- """ A simple rot-13 encoder since `str.encode('rot13')` was removed from
- Python as of version 3.0. It rotates both uppercase and lowercase letters individually.
- """
- total = []
- for char in data:
- if char in ascii_uppercase:
- index = (ascii_uppercase.find(char) + 13) % 26
- total.append(ascii_uppercase[index])
- elif char in ascii_lowercase:
- index = (ascii_lowercase.find(char) + 13) % 26
- total.append(ascii_lowercase[index])
- else:
- total.append(char)
- return "".join(total)
+ return ''.join(chr(ord(c)+(13 if 'A'<=c.upper()<='M' else
+ -13 if 'N'<=c.upper()<='Z' else 0)) for c in data)
def some_topic():
import time
More information about the pypy-commit
mailing list