我试图在不知道凯撒密码中的密钥的情况下解密用户的文本。
我可能大部分都理解了,但是我不明白为什么他们在第8行使用了mod 26
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z']
print('write the message you want to decode?')
inputString = input()
inputString = inputString.lower()
transAlphabet = {}
def createDict(shift):
for i in range(0,26):
letter = alphabet[i]
transAlphabet[letter]=alphabet[(i+shift)%26]
def encodeMessage(message):
cypherText = ''
for letter in message:
if letter in transAlphabet:
cypherText = cypherText + transAlphabet[letter]
else:
cypherText = cypherText + letter
print(cypherText)
for i in range(0,26):
createDict(i)
encodeMessage(inputString)
如果有人帮助我,请给我很大的帮助!
答案 0 :(得分:1)
%26
的模为z
时,使字母变成圆形。
带有a
和alph[(i + shift) % 26]
的{{1}}的示例
i=20
,并且它不存在shift=10
,字母30
但是您的算法也很奇怪,我本来可以为每辆车进行即时换档,但是您的解决方案对于长文本而言可能更有效,因为您不需要每次都计算换档。
之前不计算移位后的字母会像这样
30%26 = 4