“如何修复”;TypeError:字符串索引必须是整数;Python中的错误

“如何修复”;TypeError:字符串索引必须是整数;Python中的错误,python,error-handling,Python,Error Handling,我决定编写一些代码,根据一个无序字符串(包括所有ASCII字母)对消息进行编码。代码如下: from string import ascii_letters as letters from random import shuffle Code = list(letters) shuffle(Code) ''.join(Code) print("Your code is:") for i in Code: print(i, end="") print(" ") message =

我决定编写一些代码,根据一个无序字符串(包括所有ASCII字母)对消息进行编码。代码如下:

from string import ascii_letters as letters
from random import shuffle

Code = list(letters)

shuffle(Code)

''.join(Code)

print("Your code is:")
for i in Code:
    print(i, end="")

print(" ")
message = input("Input your message: ")

for i in message:
    if message[i] == 'a':
        message[i] = Code[0]
...
所以我希望它能工作,但出于某种原因,我只得到了“TypeError:字符串索引必须是整数”

您有
'.join(code)
,但它没有分配给任何对象,所以代码仍然是一个列表。要使其成为字符串do
code=''.join(code)

将其转换为字符串后,与打印(代码)相同。 您正在迭代消息,因此i是字符,但您将其视为索引:

您也可以这样做:注意ord将其转换为ascii值

for i in range(len(message)):
    if message[i] == 'a':
        message = message.replace(message[i], Code[0])
您可以将其转换为ascii以处理其他字符

    message = message.replace(message[i], Code[ord(message[i])- ord('a')])
ord(message[i])-ord('a')
获取代码的适当索引。 或


message
是字符串,因此
i
是字符(而不是索引),因此您有ie.
message[“A”]
。如果i==“a”您需要
,您可以使用list作为结果-
结果。append(code[0])
或使用
作为i,enumarate中的char(message):
来获取char和index。可能需要创建字典
{“a”:“z”,“b”:“q”,}
,并使用它来代替所有
如果
。它将是更短的代码。
    message = message.replace(message[i], Code[ord(message[i])- ord('a')])
for c in message:
    message = message.replace(c, Code[ord(c)- ord('a')])