我写了一个简单的“密码”程序,将字母表中的字母翻译成一系列数字。我写的编码器程序有效,但解码器没有。这是解码器的代码:
print("decode")
message = input("input: ")
encoded = ""
for char in message:
if char == "7777":
encoded += "a"
elif char == "7778":
encoded += "b"
elif char == "7788":
encoded += "c"
elif char == "7888":
encoded += "d"
elif char == "8887":
encoded += "e"
...
elif char == "4554":
encoded += "y"
elif char == "4444":
encoded += "z"
else:
encoded += char
print("+-----------------------------+")
print("output: ")
print(encoded)
print("+-----------------------------+")
输出只是数字,例如当我输入“7777”时它输出“7777”时它应该输出“a”。任何帮助赞赏!谢谢!
答案 0 :(得分:1)
您的错误非常简单。由于您要遍历数组,因此当您要检查每个四个字符(评估为字母)时,您正在检查每个字符。将你的循环改为:
for i in range(0, len(message), 4):
此循环现在迭代字符串中的每四个索引,然后您可以使用它来创建表示当前单词的新字符串:
currentWord = message[i:i+3]
现在你应该在所有条件下检查这个新变量。
答案 1 :(得分:1)
问题出在您的for
声明中:
for char in message:
这将遍历消息的各个字符。但是,您的解码需要您输入4个字符的输入字符串片段。相反,尝试像
这样的东西for i in range(0, len(message), 4):
char = message[i:i+3]
...
除此之外,在代码中进行了许多改进 - 尤其是某种类型的翻译表@eagle已经提出了最常见的字典。