python - 凯撒密码和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 ...”
解决方案
味精应该是这样的
msg = "What is the intercepted message \n"
此外,您可能想要打印而不是返回这里
return msg_ans
推荐阅读
- c# - EF6 不保存更改
- python - Python - 嵌套字典中的最大值键,泛化
- qt - 将在 Debian 下运行的带有 GLADE 文件的 Pygtk 应用程序迁移到 MS Windows10 中。如何?
- wordpress - 博客文章无法在我的自定义 WordPress 主题上打开
- ruby-on-rails - Rails:为 Mongoid 数据库创建基于下拉列表的搜索过滤器
- go - 如何在 Go 中使用中缀(比较)运算符作为参数
- stored-procedures - 从 SQL 代理作业调用时,工作存储过程失败
- python - 在散景图中表示点的 x 坐标
- docker - ENV/ARG 命令未在 Dockerfile 中填充变量
- angular - 如何选择 Observable 或常规值