python rot13,Python文本加密:rot13

你有麻烦了。如果您的字符在字母表的后半部分,它将是空的,因为i+13将偏离末尾。有几种方法可以修复它。在

最简单的方法是简单地将字母表字符串加倍(字面意思是:alph = alph * 2)。这意味着您最多可以访问52个值,而不仅仅是26个值。不过,这是一个相当粗糙的解决方案,最好是修复索引。在

一个更好的选择是从索引中减去13,而不是加上13。Rot13是对称的,因此两者都有相同的效果,并且它可以工作,因为负索引在Python中是合法的(它们指从末尾向后计数的位置)。在

不管是哪种情况,实际上根本没有必要做切片。您只需获取一个值(与C不同,Python中没有char类型,因此单个字符也是字符串)。如果只做这个更改,那么它可能会清楚地说明当前代码失败的原因,因为尝试从字符串末尾访问单个值会引发异常。在

编辑:实际上,在考虑了什么是真正最好的解决方案之后,我倾向于建议完全避免基于索引的数学解决方案。一个更好的方法是使用Python的奇妙字典来完成从原始字符到加密字符的映射。您可以创建并使用这样的Rot13字典:alph="abcdefghijklmnopqrstuvwxyz"

rot13_table = dict(zip(alph, alph[13:]+alph[:13])) # lowercase character mappings

rot13_table.update((c.upper(),rot13_table[c].upper()) for c in alph) # upppercase

def rot13(s):

return "".join(rot13_table.get(c, c) for c in s) # non-letters are ignored

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值