我正在制作一个学校的课程。它的意思是破译(不确定它叫什么)在字母表上移动的文本,例如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计算?不太确定,但希望找出问题所在。
答案 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])
然而,这仍然没有处理环绕。我认为这是你的下一个阶段。