密码解码器无法正常工作?

时间:2018-02-13 22:05:44

标签: python python-3.x

我写了一个简单的“密码”程序,将字母表中的字母翻译成一系列数字。我写的编码器程序有效,但解码器没有。这是解码器的代码:

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”。任何帮助赞赏!谢谢!

2 个答案:

答案 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已经提出了最常见的字典。