入坑codewars第20天- Rot13

题目:

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)

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值