凯撒密码由开变为两个字母

2024-03-28 18:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个凯撒密码,但似乎从我的密码,字母移动2个字母了。例如,如果字母是a,它将输出c而不是b。你知道吗

import collections

import string

def caesar(rotate):

  upper = collections.deque(string.ascii_uppercase)

  upper.rotate(1)
  upper = ''.join(list(upper))

  return rotate.translate(str.maketrans(string.ascii_uppercase, upper))

code = input('Secret message: ')


print (caesar(code))

Tags: import密码stringdef字母asciicodeupper
1条回答
网友
1楼 · 发布于 2024-03-28 18:32:48

当我运行这个时,我实际上得到了z的输入a。这是因为行return rotate.translate(str.maketrans(string.ascii_uppercase, upper))string.ascii_uppercase映射到upper"ABC...Z"映射到"ZAB...Y",从而使一个字符向左移动,而不是向右移动。通过将参数的顺序切换到return rotate.translate(str.maketrans(upper, string.ascii_uppercase)),您将得到我认为您需要的正确的转换。你知道吗

相关问题 更多 >