在python中的一串文本上使用caesarian密码?

Chr*_*ris 2 python encryption

我正试图慢慢淘汰所有复杂的python.基本上,我正在寻找一些方法,在python中,取一串字符并用"x"字符将它们全部推送.

例如,输入abcdefg会给我cdefghi(如果x是2).

Fed*_*oni 9

我的第一个版本:

>>> key = 2
>>> msg = "abcdefg"
>>> ''.join( map(lambda c: chr(ord('a') +  (ord(c) - ord('a') + key)%26), msg) )
'cdefghi'
>>> msg = "uvwxyz"
>>> ''.join( map(lambda c: chr(ord('a') +  (ord(c) - ord('a') + key)%26), msg) )
'wxyzab'
Run Code Online (Sandbox Code Playgroud)

(当然,只有当msg为小写时,它才能正常工作......)

编辑:我绝对是第二个David Raznick的回答:

>>> import string
>>> alphabet = "abcdefghijklmnopqrstuvwxyz"
>>> key = 2
>>> tr = string.maketrans(alphabet, alphabet[key:] + alphabet[:key])
>>> "abcdefg".translate(tr)
'cdefghi'
Run Code Online (Sandbox Code Playgroud)

  • 在一行中使用lambda,map和join有什么好处?是不是应该在Python中试图避免的东西? (2认同)

Dav*_*ick 5

我认为你最好的办法是看看string.translate.您可能必须使用make_trans来制作您喜欢的映射.