题目:
ROT13 is a simple letter substitution cipher that replaces a letter with the letter 13 letters after it in the alphabet. ROT13 is an example of the Caesar cipher.
Create a function that takes a string and returns the string ciphered with Rot13. If there are numbers or special characters included in the string, they should be returned as they are. Only letters from the latin/english alphabet should be shifted, like in the original Rot13 "implementation".
Please note that using "encode" in Python is considered cheating.
题意就是:
题意:
就是给字符串加密,字母要位移13位,数字和特殊字符不动;
思路:
思路:
见代码;
代码:
import string
from codecs import encode as _dont_use_this_
def rot13(message):
string2="`!@#$%^&*()_+-=/*{}[]\|';:/?,.<> "
string1=""
for x in message:
if x.isdigit() or (x in string2):
string1=string1+x
else:
if ((ord(x.lower())+13) <= ord('z')):
string1=string1+chr(ord(x)+13)
else:
y=13-(ord('z')-ord(x))+ord('a')-1
string1=string1+chr(y)
return string1
看看大神的精简代码:
import string
from codecs import encode as _dont_use_this_
from string import maketrans, lowercase, uppercase
def rot13(message):
lower = maketrans(lowercase, lowercase[13:] + lowercase[:13])
upper = maketrans(uppercase, uppercase[13:] + uppercase[:13])
return message.translate(lower).translate(upper)
这个牛
import string
def rot13(message):
return message.encode("rot13")
#oh snap
import string
from string import maketrans, lowercase as lc, uppercase as uc
def rot13(message):
tran = maketrans(lc + uc, lc[13:] + lc[:13] + uc[13:] + uc[:13])
return message.translate(tran)