我正在使用Python 3.4编写,到目前为止编写了这个:
-D
我不知道如何对解密部分进行编程(请注意:我希望代码相对简单,并且希望它与上面的代码类似)。
答案 0 :(得分:0)
Caesar cyphers是对称的 - 你只需要向后应用相同的逻辑 - 在加密文本中找到索引并从普通字母表中获取该索引:
plain = ''
for eachletter in cipertext:
position = shiftedAlphabet.index(eachletter)
shiftedLetter = alphabet[position]
plain = plain + shiftedLetter
答案 1 :(得分:0)
因此,您已经发布的代码存在一些问题。我可以忽略一些轻微的语法错误,但也存在一些逻辑错误。
您向用户提示的第二个提示询问他们想要转移多少班次,但您用于该计划的转换字母始终从'a'
转移到'j'
。如果用户进入的班次不是9
?
另一方面,当输入明文的字符不在字母表中时会发生什么?当你执行.index(每个通讯)时,它将返回-1。这将如何导致您的密码行为?
最后,您的教师似乎希望能够随时按'e'
或'd'
进行加密或解密,但是如果用户在开始时尝试解密,请立即I don't understand
a cat
打印1}}最后解密时遇到同样的问题。此外,您也可能需要在解密时要求转换。
我的最后一条建议是考虑一下凯撒密码是什么。你只是旋转字母。如果输入为2
且班次为c ecv
,则会获得2
。要解密,您只需向后旋转相同数量的user_contests = Contest.objects.filter(picture__user=user)
。