首页 > 解决方案 > 凯撒密码和while循环的问题

问题描述

我正在制作这个 Caesar Cipher 解码器,我希望程序打印每个选项(可以转换的 26 种方式)。但是,当我运行我的代码时,什么都没有显示,我的错误是什么。如果你知道请告诉我,我是编码新手,需要帮助。

import sys
import time

L2I = dict(zip("ABCDEFGHIJKLMNOPQRSTUVWXYZ",range(26)))
I2L = dict(zip(range(26),"ABCDEFGHIJKLMNOPQRSTUVWXYZ"))

msg = ("What is the intercepted message \n")
for character in msg:
  sys.stdout.write(character)
  sys.stdout.flush()
  time.sleep(0.1)
msg_ans = input("> ")
msg_ans = msg_ans.strip()

shift = 0
def decipher(msg_ans,shift): 
  while shift < 26: 
    for i in msg_ans.upper():
      if i.isalpha() == True : 
        msg_ans += I2L[ (L2I[i]+ shift)%26 ]
        shift += 1
      else: 
        msg_ans += i
        shift += 1 
  print (msg_ans)
decipher(msg_ans,shift)

我希望它能够输出 26 种可以移动的方式。但是,当我输入“Hello”这个词时,我得到的是“HelloHFNOSMKSTXRQZBGWUCDHBAJLQLKTVAVVFIO”而不是“IFMMP JGNNQ ...”

标签: pythonencryptionwhile-loop

解决方案


味精应该是这样的

msg = "What is the intercepted message \n"

此外,您可能想要打印而不是返回这里

return msg_ans

推荐阅读