问题描述:
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
is considered cheating.
代码实现:
#codewars第八题
def rot13(message):
my_list = ''
_length = len(message)
for i in range(0,_length):
if (message[i] >= 'A' and message[i] <= 'Z') or (message[i] >= 'a' and message[i] <= 'z'):
if (message[i] >= 'A' and message[i] < 'N') or (message[i] >= 'a' and message[i] < 'n'):
my_list += chr(ord(message[i])+13) #因为字符串不可以修改 但是字符串支持 + 运算 所以可以利用 [ "" + ] 运算来实现字符串的修改
else:
my_list += chr(ord(message[i])-13) #ord('str')是把字符转化为ASCII码 chr(integer) 是将整数(ASCII码)转换为字符
else:
my_list += message[i]
return my_list
#另解
import string
def rot13(message):
first = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
trance = 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'
return message.translate(str.maketrans(first, trance))
rot13("Tant1@")