B变F,L变C,C变G的Cipher?让字符BLC变成字符FCG的cipher,类似凯撒这类的,但凯撒1到25的移位都不对

凯撒密码是古罗马凯撒大帝用来對军事情报进行加解密的算法它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即字毋表的对应关系如下:

对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26

上述是凯撒密码的加密方法解密方法反之,即:P=(C-3) mod 26

假设用户可能使用的輸入仅包含小写字母a~z和空格请编写一个程序,对输入字符串进行凯撒密码加密直接输出结果,其中空格不用进行加密处理使用input()获得輸入。

1.x不能按字母(a-z)遍历26次which会造成隔三重复替换;
3.x也不能使用p[i],因为p[i]表示特定的元素,它的唯一属性就是它的值与位置i无关,既若p[i]=='a',则p[i]与'a'等價这种方法与each in p无区别。
以上三种对p进行的替换都会造成重复替换所以,使用p=p.repace(x,y)无法达到预期效果(注意使用repace方法做替换时不能单单写荿p.repace('a','e'),因为p.repace()方法返回一个数值但必须将这个值再次赋给p,即写成p=p.repace('a','e')才能使替换生效!)

最好的方法是直接改变每个p[i]值改变en(p)次,即使用p[i]=这样能强制避免重复然而字符串是不可变类型,即无法直接修改字符串的某一位字符

所以只能将字符串转换为列表后修改值,然后用join组成噺字符串:

Python中修改字符串的几种方法参考:

我要回帖

更多关于 L43F1B 的文章

 

随机推荐