简单的解密程序

时间:2016-05-23 21:22:48

标签: python arrays indexing

我正在制作一个学校的课程。它的意思是破译(不确定它叫什么)在字母表上移动的文本,例如abc到bcd。

alpha = ["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"]

userInput = str(input("Enter text:   "))
key = 1
userInput = userInput.lower()
print(userInput)

def userText(userInput, alpha, key):
    translated = ""
    for x in (userInput):
        num = ord(alpha[x])
        num += key
    translated += chr(num)
    print(translated)

print(userText(userInput, alpha, key))

我收到了错误:

File "/Users/Andreasjensen/Documents/decipher.py", line 13, in userText
    num = ord(alpha[x])
TypeError: list indices must be integers or slices, not str

我认为这意味着它无法用alpha计算?不太确定,但希望找出问题所在。

1 个答案:

答案 0 :(得分:0)

x已经是文字字符了。相反,我认为你希望第一个循环语句是一个简单的转换为整数:

num = ord(x)

请注意,这意味着您的 alpha 数组无用 - 就是这样。虽然您仍然需要在字母表的末尾包围,但基本翻译看起来就像您所做的那样。请注意,您的循环可能会崩溃:

for x in userInput:
    translated += chr(ord(x) + key)

...或者只是使用列表理解:您列出所有单个字符的翻译,然后将其加入字符串:

translated = ''.join([chr(ord(x) + key) for x in userInput])

然而,这仍然没有处理环绕。我认为这是你的下一个阶段。