一尘不染

简短的rot13函数-Python

python

我正在Python中寻找一个简短而又酷的rot13函数;-)我编写了这个函数:

def rot13(s):
    chars = "abcdefghijklmnopqrstuvwxyz"
    trans = chars[13:]+chars[:13]
    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
    return ''.join( rot_char(c) for c in s )

谁能做得更好?例如,支持大写字符。


阅读 378

收藏
2021-01-20

共1个答案

一尘不染

这是一个maketrans / translate解决方案

import string
rot13 = string.maketrans( 
    "ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz", 
    "NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm")
string.translate("Hello World!", rot13)
# 'Uryyb Jbeyq!'
2021-01-20